Kako provjeriti je li određeni ključ u hash-u ili ne?

Želim provjeriti je li u sesiji prisutan "korisnički" ključ. Kako to mogu učiniti?

Imajte na umu da ne želim provjeriti je li vrijednost ključa nula ili ne. Samo želim provjeriti je li prisutan "korisnički" ključ.

548
25 дек. Mohit Jain postavljen 25. prosinca 2010-12-25 01:02 '10 u 1:02 2010-12-25 01:02
@ 6 odgovora

Hash key? označava je li ključ prisutan ili ne.

 session.key?("user") 
822
25 дек. Odgovor se daje sepp2k 25 prosinca. 2010-12-25 01:09 '10 u 1:09 2010-12-25 01:09

Dok Hash#has_key? radi svoj posao, kao što Matz primjećuje ovdje , je li zastario u korist Hash#key? ,

 hash.key?(some_key) 
264
21 авг. Odgovor daje Božidar Batsov 21. kolovoza . 2013-08-21 16:09 '13 u 16:09 2013-08-21 16:09

U novijim verzijama Ruby, instanca Hash ima key? metodu key? :

 {a: 1}.key?(:a) => true 

Svakako upotrijebite znak ili ključ niza ovisno o tome što imate u hash-u:

 {'a' => 2}.key?(:a) => false 
32
13 марта '15 в 14:20 2015-03-13 14:20 odgovor daje installero 13. ožujka '15. u 14:20 sati 2015-03-13 14:20

Vrlo je kasno, ali je bolje koristiti simbole kao ključ:

 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 

No, kada stvarate hash, ako prođete niz kao ključ, tada će tražiti string u ključevima.

Ali kada stvarate hash, prenosite li znak kao ključ, a zatim has_key? će tražiti ključeve pomoću simbola.


Ako koristite Rails, možete koristiti Hash#with_indifferent_access kako biste to izbjegli; oba hash[:my_key] i hash["my_key"] će pokazivati ​​na isti unos

26
17 июня '14 в 16:08 2014-06-17 16:08 odgovor je dan GB 17. lipnja 14 u 16:08 2014-06-17 16:08

Možete li uvijek koristiti Hash#key? da biste provjerili je li ključ u hashu ili ne.

Ako ne, vratit će vam false

 hash = { one: 1, two:2 } hash.key?(:one) #=> true hash.key?(:four) #=> false 
4
14 авг. Odgovor dao Deepak Mahakale 14. kolovoza. 2016-08-14 19:13 '16 u 19:13 2016-08-14 19:13

Još jedan put ovdje

 hash = {one: 1, two: 2} hash.member?(:one) #=> true hash.member?(:five) #=> false 
0
07 февр. odgovor je dao Arvind singh 07. veljače. 2019-02-07 14:24 '19 u 2:24 pm 2019-02-07 14:24

Pogledajte i ostala pitanja o oznakama ili Ask a Question