我想检查会话哈希中是否存在"user"键。我应该如何做到这一点?
请注意,我不想检查键的值是否为零。我只想检查是否存在"user" 键。
请注意,我不想检查键的值是否为零。我只想检查是否存在"user" 键。
我要检查会话哈希中是否存在 "user" 键。我该如何实现此功能?
请注意,我不想检查该键的值是否为空。我只想检查是否存在 "user" 键。
我要检查会话哈希中是否存在 "user" 键。我该如何实现此功能?
请注意,我不想检查该键的值是否为空。我只想检查是否存在 "user" 键。
Hash
的key?
方法可以告诉你某个特定的键是否存在。
session.key?("user")
虽然Hash#has_key?
可以完成任务,但正如Matz在这里所提到的那样,它已经被Hash#key?
取代了。
hash.key?(some_key)
#has_key
实际上并没有被弃用:https://github.com/rubocop/rubocop/issues/3224#issuecomment-226175176 - jayqui现在已经很晚了,但最好还是使用符号作为密钥:
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
来避免这种情况;:my_key
和“my_key”
将指向同一条记录。 - Devon Parsonsmy_hash.has_key? my_key.to_sym
:) - q9fhash = {one: 1, two: 2}
hash.member?(:one)
#=> true
hash.member?(:five)
#=> false
您可以始终使用Hash#key?
来检查哈希表中是否存在键。
如果不存在,则会返回false
。
hash = { one: 1, two:2 }
hash.key?(:one)
#=> true
hash.key?(:four)
#=> false
YourHash.has_key? :yourkey
h = {}
if h.respond_to?(:key?) && h.key?('text') #with respond_to method check if it's hash
puts h['text']
end