访问ruby数据结构的元素

时间:2015-03-27 16:04:17

标签: ruby hash

我有一个看起来像这样的ruby数据结构:

my_item
=> {:data_id=>"some id",
 :description=>
  "some description",
 :time=>"some time",
 :name=>"some name"}

我认为这是一个哈希,但如果我尝试访问数据,我会得到nil。 e.g:

puts my_item['name']

=> nil

如何访问元素?

2 个答案:

答案 0 :(得分:2)

Stringssymbols不是一回事。如果使用符号(:name)作为索引,则无法使用字符串访问它:

foo = { :name => 'Hello' }
puts foo[:name]  # => "Hello"
puts foo['name']  # => nil

同样,如果使用字符串('name'),则不能使用符号来访问元素:

bar = { 'name' => 'World' }
puts bar[:name]  # => nil
puts bar['name']  # => "World"

请注意,Ruby on Rails 允许字符串和符号在某种程度上互换 - 请参阅HashWithIndifferentAccess文档。

答案 1 :(得分:1)

my_item是一个哈希,其键是所有符号(例如:name),而您使用字符串('name')作为键。

my_item[:name]
# => "some name"