“사용자”키가 세션 해시에 있는지 여부를 확인하고 싶습니다. 어떻게해야합니까?
키의 값이 nil인지 여부를 확인하고 싶지 않습니다. “사용자” 키 가 있는지 확인하고 싶습니다 .
답변
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#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
답변
Rails 5에서 has_key? 메소드는 키가 해시에 있는지 확인합니다. 사용하는 구문은 다음과 같습니다.
YourHash.has_key? :yourkey