访问 ruby 数据结构的元素

Accessing elements of a ruby data structure

我有一个 ruby 数据结构,如下所示:

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

我假设它是一个散列,但如果我尝试访问数据,我会得到 nil。例如:

puts my_item['name']

=> nil

如何访问元素?

my_item是一个哈希,它的键都是符号(例如:name),而你使用的是字符串('name')作为键。

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

Strings and symbols 不是一回事。如果使用符号(: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 does allow strings and symbols to be interchanged to some degree - see the HashWithIndifferentAccess 文档。