В Ruby что означает "=>" и как оно работает?
Во время обучения Ruby я иногда встречался с оператором "= > ". Обычно я вижу его в виде
:symbol => value
и, по-видимому, он часто используется при передаче значений функциям. Что именно называется этим оператором? Что это значит? Является ли он встроенным в Ruby или это нечто, что разные рамки, такие как Rails и DataMapper, добавляют к классу символов? Используется ли он только в сочетании с классом символов? Спасибо.
Ответы
Ответ 1
=>
отделяет ключи от значений в литерале хэш-карты. Он не является перегружаемым и не связан конкретно с символами.
Листинг букв hashmap имеет форму {key1 => value1, key2 => value2, ...}
, но при использовании в качестве последнего параметра функции вы можете оставить фигурные скобки. Поэтому, когда вы видите вызов функции типа f(:a => 1, :b => 2)
, f
вызывается с одним аргументом, который представляет собой хэш-карту с ключами :a
и :b
и значения 1
и 2
.
Ответ 2
Вы можете услышать, что этот оператор называется "хеш-ракетой", что означает, что вы используете его при определении хеша рубина.
Это документация Ruby Hash, если вы не знакомы: http://www.ruby-doc.org/core/classes/Hash.html
Обратите внимание, что в Ruby 1.9, если вы определяете хэш, который использует символы в качестве ключей, теперь вам доступен альтернативный синтаксис: http://blog.peepcode.com/tutorials/2011/rip-ruby-hash-rocket-syntax p >
Ответ 3
Если вы хотите сделать дальнейший Googling, =>
иногда называют хешетом, потому что он выглядит как ракета (в том же смысле, что <=>
выглядит как космический корабль), и он используется в хэшах.
Или вы можете использовать SymbolHound.
Ответ 4
Совет. Если вы используете его в хеше, например {:a => "A", :b => "B"}
, в Ruby 1.9 вы можете использовать его как хэш JSON:
{
a: "A",
b: "B"
}
Ответ 5
В дополнение к В Ruby, что делает "= > " и как это работает?:
В основном вы увидите =>
для определения параметров для функции. Подумайте об этом как о приятном удобстве: вам не нужно помнить правильный порядок ваших параметров, так как все параметры завернуты в гигантский хеш. Поэтому, если у вас есть простой вспомогательный метод, например
link_to "My link", my_path, :confirm => "Are you sure?"
это лучше, чем
link_to "My link", my_path, null, null, null, null, "Are you sure?"
только потому, что вы хотите использовать редко используемый параметр. Таким образом, передача параметров с помощью хэша - это просто соглашение в Ruby/Rails, чтобы облегчить жизнь.