我想检查会话哈希中是否存在“用户”密钥 . 我怎样才能做到这一点?
请注意,我't want to check whether the key'的值是否为零 . 我只想检查"user"键是否存在 .
Hash 的 key? 方法告诉您是否存在给定的密钥 .
Hash
key?
session.key?("user")
当 Hash#has_key? 完成工作时,正如Matz注意到here,它已被弃用,而不是 Hash#key? .
Hash#has_key?
Hash#key?
hash.key?(some_key)
在最新的Ruby版本中,Hash实例有一个key?方法:
{a: 1}.key?(:a) => true
请务必使用符号键或字符串键,具体取决于哈希中的内容:
{'a' => 2}.key?(:a) => 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
但是当你将字符串作为键传递时创建哈希,那么它将在键中搜索字符串 .
但是在创建哈希时,你将符号作为键传递给has_key?将使用符号搜索键 .
如果您使用的是Rails,则可以使用 Hash#with_indifferent_access 来避免这种情况; hash[:my_key] 和 hash["my_key"] 都将指向同一记录
Hash#with_indifferent_access
hash[:my_key]
hash["my_key"]
您始终可以使用 Hash#key? 来检查密钥是否存在于哈希中 .
如果不是它会返回你 false
false
hash = { one: 1, two:2 } hash.key?(:one) #=> true hash.key?(:four) #=> false
5 回答
Hash
的key?
方法告诉您是否存在给定的密钥 .当
Hash#has_key?
完成工作时,正如Matz注意到here,它已被弃用,而不是Hash#key?
.在最新的Ruby版本中,Hash实例有一个key?方法:
请务必使用符号键或字符串键,具体取决于哈希中的内容:
这是很晚但最好使用符号作为关键:
但是当你将字符串作为键传递时创建哈希,那么它将在键中搜索字符串 .
但是在创建哈希时,你将符号作为键传递给has_key?将使用符号搜索键 .
如果您使用的是Rails,则可以使用
Hash#with_indifferent_access
来避免这种情况;hash[:my_key]
和hash["my_key"]
都将指向同一记录您始终可以使用
Hash#key?
来检查密钥是否存在于哈希中 .如果不是它会返回你
false