Я предполагаю, что вы привыкли использовать Hash в Ruby on Rails, который подклассов класса Hash
, который поставляется с Ruby как HashWithIndifferentAccess
, и вы обычноникогда не заставляет смотреть на это как на разработчика (в Rails).Также следует отметить, что Rails напрямую изменяет базовый * класс Ruby Hash
класс, так что на самом деле вы имеете гораздо больше доступных вам в Rails (или, особенно, когда ActiveSupport) загружено).
Ruby (чистый), однако не возится с ключами в хэше.Это позволяет использовать некоторые мощные приложения - помните, что в Ruby все является объектом.
Таким образом, 'string'
и :symbol
являются одновременно объектами и разными объектами.Вы даже можете использовать Class
в качестве ключа в своем хэше.
{
Object => :object_symbol,
Class => :class_symbol
}
Так что, когда вы пытаетесь получить доступ к значениям за ключом в вашем хэше, убедитесь, что вы используете именно тот ключ.1024 *
В приведенном выше примере вы используете символ product
в качестве ключа.Ruby использует :
для обозначения этого.
{
product: 'A',
qty: 1
}
Это эквивалентно высказыванию
{
:product => 'A',
:qty => 1
}
Итак, вы хотите позвонить get_value = get_first_hash[:product]