回答:
Hash
のkey?
メソッドは、指定されたキーが存在するかどうかを通知します。
session.key?("user")
一方でHash#has_key?
、仕事を取得しますマッツノートとして、ここでは、それはの賛成で廃止されましたHash#key?
。
hash.key?(some_key)
最新のRubyバージョンでは、ハッシュインスタンスには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
している場合は、これを回避するために使用できます。両方:my_key
と"my_key"
同じレコードを指すようになります
Hash#key?
キーを使用してハッシュに存在するかどうかをいつでも確認できます。
そうでなければそれはあなたを返します false
hash = { one: 1, two:2 }
hash.key?(:one)
#=> true
hash.key?(:four)
#=> false