Ruby on Rails: что означает символ =>?
Я работаю через Head First Rails, и я продолжаю видеть =>
. Это в маршрутах:
map.connect '/marmots/new', controller=>'marmots', :action=>'new'
Это в частичном рендеринге:
render :partial=>"new_marmot"
В настройках ссылок:
<%= link_to 'Destroy', marmot, :confirm=>'Are you sure?', :method=>:delete %>
В принципе, =>
означает "равно", но если да, почему бы просто не использовать знак равенства? Это больше похоже на "отправить?"
Как вы говорите = > и что вы понимаете под этим? Я могу обойтись, не зная об этом, но меня это беспокоит.
Ответы
Ответ 1
Ваш первый вызов функции - это ярлык для
map.connect('/marmots/new', {:controller=>'marmots', :action=>'new'})
где {} - Хэш-литерал. Второй аргумент метода connect map объекта - это объект класса Hash с двумя ключами: controller и: action (оба являются литералами класса Symbol), соответствующими значениями которых являются сундуки "сурки" и "новые".
EDIT: Я называю это "стрелка" или "карта".
Ответ 2
Я слышал, что его обычно называют "хеш-ракетой". Это оператор присваивания, используемый с хешами в рубине. Поэтому, если у вас есть хеш и вы хотите присвоить значение ключу (как правило, литералу), используйте
{key1 => value1, key2 => value2}
Rails и другой код Ruby часто передают хеши в качестве параметров для методов для достижения того же эффекта, что и именованные аргументы, на других языках, таких как Python.
object.method({:param1 => value1, :param2 => value2})
EDIT: при чтении я использую "get" в качестве глагола, например. param1 получает значение1 и т.д.