无法从哈希中提取数据



我有一个散列数组:

array_hash = [{product: 'A', qty: 1}, {product: 'B', qty: 2}]

我想得到第一个关键字"product"的值。

我得到了这个代码的预期散列:

get_first_hash = array_hash[0]
# => {product: 'A', qty: 1}

但是,此代码返回nil:

get_value = get_first_hash['product']
# => nil

我希望有人能告诉我这件事。

希望这就足够了!

array_hash.first[:product]

如果你想要第二个,你只需要做

array_hash.second[:product]

此外,.first只是执行array_hash[0]的助手,但获得nil背后的问题是,您需要在Ruby 中用一个:符号来表示它

我猜你已经习惯了在RubyonRails中使用Hash,它将Ruby附带的Hash类子类化为HashWithIndifferentAccess,而且你通常不会被迫(在Rails中(将其视为开发人员。还应该注意的是,Rails直接修改Ruby的基本Hash类,因此在Rails中(或者,特别是在加载ActiveSupport时(实际上有更多的可用性。

然而,Ruby(纯(在散列中的键时不会乱来。这允许一些强大的应用程序——记住,Ruby中的一切都是一个Object。

因此,'string':symbol都是对象,而且是不同的对象。您甚至可以使用Class作为哈希中的密钥。

{
Object => :object_symbol,
Class => :class_symbol
}

因此,当您试图访问哈希中某个键后面的值时,请确保使用确切的键本身。

在上面的示例中,您使用符号product作为密钥。Ruby使用:来表示。

{
product: 'A',
qty: 1
}

这相当于说

{
:product => 'A',
:qty => 1
}

所以你想称之为get_value = get_first_hash[:product]

最新更新