Programing

특정 키가 해시에 있는지 확인하는 방법은 무엇입니까?

lottogame 2020. 10. 3. 09:48
반응형

특정 키가 해시에 있는지 확인하는 방법은 무엇입니까?


세션 해시에 "사용자"키가 있는지 확인하고 싶습니다. 어떻게 할 수 있습니까?

키의 값이 nil인지 아닌지 확인하고 싶지 않습니다. "사용자" 있는지 확인하고 싶습니다 .


Hashkey?메서드는 주어진 키가 있는지 여부를 알려줍니다.

session.key?("user")

Hash#has_key?작업이 완료 되는 동안 Matz가 여기 에서 언급했듯이 Hash#key?.

hash.key?(some_key)

최신 Ruby 버전에서 Hash 인스턴스에는 다음과 같은 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#key?키가 해시에 있는지 여부를 항상 확인 하는 사용할 수 있습니다 .

그렇지 않으면 당신을 반환합니다 false

hash =  { one: 1, two:2 }

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

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

또 다른 방법이 있습니다

hash = {one: 1, two: 2}

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

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

참고 URL : https://stackoverflow.com/questions/4528506/how-to-check-if-a-specific-key-is-present-in-a-hash-or-not

반응형