답변:
Hash
의 key?
방법은 주어진 키가 있는지 여부를 알려줍니다.
session.key?("user")
Hash#has_key?
Matz가 여기 에서 언급 한 것처럼 작업을 수행 하는 동안 이 기능은 더 이상 사용되지 않습니다 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
그러나 문자열을 키로 전달하면 해시를 만들 때 키에서 문자열을 검색합니다.
그러나 해시를 만들 때 symbol을 key로 전달한 다음 has_key? 기호를 사용하여 키를 검색합니다.
Rails를 사용한다면 Hash#with_indifferent_access
이것을 피하기 위해 사용할 수 있습니다 . 모두 hash[:my_key]
와 hash["my_key"]
동일한 레코드를 가리 킵니다
Hash#with_indifferent_access
이것을 피하기 위해 사용할 수 있습니다 . 모두 :my_key
와 "my_key"
동일한 레코드를 가리 킵니다