Подтвердить что ты не робот

В Ruby что означает "=>" и как оно работает?

Во время обучения Ruby я иногда встречался с оператором "= > ". Обычно я вижу его в виде

:symbol => value

и, по-видимому, он часто используется при передаче значений функциям. Что именно называется этим оператором? Что это значит? Является ли он встроенным в Ruby или это нечто, что разные рамки, такие как Rails и DataMapper, добавляют к классу символов? Используется ли он только в сочетании с классом символов? Спасибо.

4b9b3361

Ответ 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, чтобы облегчить жизнь.