ruby on rails - view教程 - 如何检查一个特定的密钥是否存在于一个散列中?




ruby on rails教程 (4)

Hashkey? 方法告诉你一个给定的键是否存在。

session.key?("user")

我想检查会话哈希中是否存在“用户”键。 我怎样才能做到这一点?

请注意,我不想检查密钥的值是否为零。 我只想检查“用户” 是否存在。


你总是可以使用Hash#key? 检查密钥是否存在于散列中。

如果不是,它会返回你false

hash =  { one: 1, two:2 }

hash.key?(:one)
#=> true

hash.key?(:four)
#=> false

它已经很晚了,但最好使用符号作为关键:

my_hash = {}
my_hash[:my_key] = 'value'

my_hash.has_key?("my_key")
 => false 
my_hash.has_key?("my_key".to_sym)
 => true 

my_hash2 = {}
my_hash2['my_key'] = 'value'

my_hash2.has_key?("my_key")
 => true 
my_hash2.has_key?("my_key".to_sym)
 => false 

但是,如果您将字符串作为密钥传递,则创建散列时,它将搜索键中的字符串。

但是,当创建散列时,您将符号传递为key,然后has_key? 将通过使用符号来搜索密钥。

如果你使用Rails,你可以使用Hash#with_indifferent_access来避免这种情况; hash[:my_key]hash["my_key"]都将指向相同的记录


Hash#has_key? 正如Matz here指出的那样,已经完成了这项工作,它已被弃用,以支持Hash#key?

hash.key?(some_key)






associative-array