=> не то же самое, как уступки, но я могу понять, почему это сбивает с толку. В хэше вы создаете ключ и значение в виде пары. Ключ и значение может быть что-нибудь
{'key1' => 'some value', :symbol_key => 'other value'}
Это отличается от задания, которое вы можете ясно видеть, потому что если вы хотите выше хэш-прежнему доступны для вашей программы, вы должны либо передать его в метод или присвоить его переменной
myhash = {'key1' => 'some value', :symbol_key => 'other value'}
И только теперь вы можете получить вещи из вашего хэша
puts myhash['key1']
Так => оператор фактически используется для построения хэшей (или Dict ионные объекты), назначение позволяет сохранять значения в программе.
Что обычно происходит Rails (и, следовательно, в миграции), заключается в том, что хеш создается и передается вызову метода без его реализации. Но сантехника все тот же, это все еще только хэш, который создается.
В Ruby 1.9 теперь вы можете определить хеши, используя синтаксис, похожий на javascript, чтобы вы могли увидеть это.
myhash = {key1: 'some value', key2: 'other value'}
Символы не могут быть назначены так же, как номера не могут быть назначены. Могут быть назначены только переменные. –
спасибо за это, отметьте это как ответ – jamesdlivesinatree
Использование Ruby '=>' как оператора присваивания для хэшей происходит из Perl, который использует тот же оператор, однако '=>' не означает «присваивать». Вместо этого подумайте, что это означает «связанный с». В Perl '=>' действительно является псевдонимом для ',', который заканчивает определение массива пары ключей и значений. Итак, в Ruby не думайте об этом как о назначении и не думайте об этом как о ассоциации. Это прекрасно подходит, когда вы знаете, что на других языках они называют хеши «ассоциированными массивами». –