Belirli bir anahtarın karma içinde olup olmadığını nasıl kontrol edebilirim?


636

Ben oturum karma "kullanıcı" anahtarının olup olmadığını kontrol etmek istiyorum. Bunu nasıl yapabilirim?

Anahtarın değerinin nil olup olmadığını kontrol etmek istemediğimi unutmayın. Sadece "kullanıcı" anahtarının mevcut olup olmadığını kontrol etmek istiyorum .

Yanıtlar:


952

Hashbireyin key?yöntem ise belirtilen anahtar mevcut olup olmadığını söyler.

session.key?("user")

nice: "string" erişimci JSON.parse ayrıştırılmış nesneleri için de çalışır :)
Bijan

2
Bu benim için işe yaramıyor: kullanıcı yöntemi bunun yerine çalıştı
Akash Agarwal

295

İken Hash#has_key?Matz notları gibi işi alır burada , bu lehine önerilmemektedir olmuştur Hash#key?.

hash.key?(some_key)

1
Bu değişiklik talebine iyi bir referans ve daha sonra Matz'dan yanıt.
Joshua Pinter

Kesin olarak bilen var mı?
codeforester


28

Çok geç ama tercihen semboller anahtar olarak kullanılmalıdır:

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 

Ancak, dizeyi anahtar olarak geçirirseniz karma oluştururken, dizeyi anahtarlarda arayacaktır.

Ama hash oluştururken sembol anahtar olarak has_key? tuşları kullanarak tuşları arayacaktır.


Rails kullanıyorsanız, bunu Hash#with_indifferent_accessönlemek için kullanabilirsiniz ; Her iki hash[:my_key]ve hash["my_key"]aynı kayda işaret eder


6
Rails kullanıyorsanız, bunu Hash#with_indifferent_accessönlemek için kullanabilirsiniz ; her ikisi de :my_keyve "my_key"aynı rekor işaret edecek
Devon Parsons

5

Hash#key?Anahtarın karma içinde olup olmadığını kontrol etmek için her zaman kullanabilirsiniz .

Değilse size geri dönecektir false

hash =  { one: 1, two:2 }

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

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

3

Başka bir yol burada

hash = {one: 1, two: 2}

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

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

0

Rails 5'te has_key? yöntemi anahtarda karma olup olmadığını kontrol eder. Kullanılacak sözdizimi:

YourHash.has_key? :yourkey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.