How to check if a specific key is present in a hash or not?
我想检查会话哈希中是否存在"用户"密钥。我该怎么做?
注意,我不想检查键的值是否为零。我只想检查"用户"密钥是否存在。
1 | session.key?("user") |
正如Matz在这里指出的那样,虽然
1 | hash.key?(some_key) |
在最新的Ruby版本中,哈希实例有一个
1 2 | {a: 1}.key?(:a) => true |
请确保根据哈希中的内容使用符号键或字符串键:
1 2 | {'a' => 2}.key?(:a) => false |
很晚了,但最好用符号作为关键:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 |
但是在创建哈希时,如果您将字符串作为键传递,那么它将在键中搜索字符串。
但是,当创建哈希时,您将符号作为键传递,然后具有u键?将使用符号搜索键。
如果您使用的是rails,那么可以使用
您可以始终使用
如果没有的话,它会把你送回。
1 2 3 4 5 6 7 | hash = { one: 1, two:2 } hash.key?(:one) #=> true hash.key?(:four) #=> false |
另一条路在这里
1 2 3 4 5 6 7 | hash = {one: 1, two: 2} hash.member?(:one) #=> true hash.member?(:five) #=> false |