如何检查哈希中是否存在特定密钥?

发布于 2024-10-09 17:40:28 字数 84 浏览 8 评论 0原文

我想检查会话哈希中是否存在“用户”密钥。我该怎么做?

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

I want to check whether the "user" key is present or not in the session hash. How can I do this?

Note that I don't want to check whether the key's value is nil or not. I just want to check whether the "user" key is present.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

染火枫林 2024-10-16 17:40:28

Hashkey? 方法告诉您给定的密钥是否存在。

session.key?("user")

Hash's key? method tells you whether a given key is present or not.

session.key?("user")
自演自醉 2024-10-16 17:40:28

虽然 Hash#has_key? 完成了工作,正如 Matz 所说 此处,它已被弃用,取而代之的是 Hash#key?

hash.key?(some_key)

While Hash#has_key? gets the job done, as Matz notes here, it has been deprecated in favour of Hash#key?.

hash.key?(some_key)
抱着落日 2024-10-16 17:40:28

哈希实例有一个密钥?方法:

{a: 1}.key?(:a)
=> true

请务必使用符号键或字符串键,具体取决于哈希中的内容:

{'a' => 2}.key?(:a)
=> false

Hash instance has a key? method:

{a: 1}.key?(:a)
=> true

Be sure to use the symbol key or a string key depending on what you have in your hash:

{'a' => 2}.key?(:a)
=> false
那小子欠揍 2024-10-16 17:40:28

现在已经很晚了,但最好应该使用符号作为键:

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_in Different_access来避免这种情况; hash[:my_key]hash["my_key"] 都将指向同一条记录

It is very late but preferably symbols should be used as 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 

But when creating hash if you pass string as key then it will search for the string in keys.

But when creating hash you pass symbol as key then has_key? will search the keys by using symbol.


If you are using Rails, you can use Hash#with_indifferent_access to avoid this; both hash[:my_key] and hash["my_key"] will point to the same record

晨曦慕雪 2024-10-16 17:40:28

另一种方法在这里

hash = {one: 1, two: 2}

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

hash.member?(:five)
#=> false

Another way is here

hash = {one: 1, two: 2}

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

hash.member?(:five)
#=> false
冷清清 2024-10-16 17:40:28

您始终可以使用 Hash#key? 来检查密钥是否存在于哈希中。

如果没有,它会返回 false

hash =  { one: 1, two:2 }

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

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

You can always use Hash#key? to check if the key is present in a hash or not.

If not it will return you false

hash =  { one: 1, two:2 }

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

hash.key?(:four)
#=> false
半衬遮猫 2024-10-16 17:40:28

在 Rails 5 中,has_key? 方法检查 key 是否存在于哈希中。使用它的语法是:

YourHash.has_key? :yourkey

In Rails 5, the has_key? method checks if key exists in hash. The syntax to use it is:

YourHash.has_key? :yourkey
怎樣才叫好 2024-10-16 17:40:28
h = {}
if h.respond_to?(:key?) && h.key?('text') #with respond_to method check if it's hash
   puts h['text'] 
end
h = {}
if h.respond_to?(:key?) && h.key?('text') #with respond_to method check if it's hash
   puts h['text'] 
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文