我想检查会话哈希中是否存在“用户”键。我该怎么做?
请注意,我不想检查键的值是否为nil。我只想检查“用户”关键是否存在。
Hash的key?方法告诉您给定的密钥是否存在。
Hash
key?
session.key?("user")
虽然Hash#has_key?完成了工作,但正如Matz所指出的这里,它已被弃用以支持Hash#key?。
Hash#has_key?
Hash#key?
hash.key?(some_key)
它很晚,但最好使用符号作为关键:
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
但是在创建哈希时,如果您将字符串作为键传递,那么它将在键中搜索字符串。
但是在创建哈希时,您将符号传递为键,然后has_key?将使用符号搜索键。
如果您使用的是Rails,您可以使用Hash#with_indifferent_access来避免这种情况;hash[:my_key]和hash["my_key"]都将指向相同的记录
Hash#with_indifferent_access
hash[:my_key]
hash["my_key"]
哈希实例有一个key?方法:
{a: 1}.key?(:a) => true
请务必使用符号键或字符串键,具体取决于您在哈希中的内容:
{'a' => 2}.key?(:a) => false
您始终可以使用Hash#key?来检查密钥是否存在于哈希中。
如果没有,它会返回你false
false
hash = { one: 1, two:2 } hash.key?(:one) #=> true hash.key?(:four) #=> false
另一条路在这里
hash = {one: 1, two: 2} hash.member?(:one) #=> true hash.member?(:five) #=> false
在Rails 5中,has_key?方法检查哈希中是否存在键。使用它的语法是:
YourHash.has_key? :yourkey