Saya ingin memeriksa apakah kunci "pengguna" ada atau tidak di hash sesi. Bagaimana saya bisa melakukan ini?
Perhatikan bahwa saya tidak ingin memeriksa apakah nilai kunci nihil atau tidak. Saya hanya ingin memeriksa apakah kunci "pengguna" ada.
Saya ingin memeriksa apakah kunci "pengguna" ada atau tidak di hash sesi. Bagaimana saya bisa melakukan ini?
Perhatikan bahwa saya tidak ingin memeriksa apakah nilai kunci nihil atau tidak. Saya hanya ingin memeriksa apakah kunci "pengguna" ada.
Jawaban:
Hash
's key?
metode memberitahu Anda apakah kunci yang diberikan hadir atau tidak.
session.key?("user")
Sementara Hash#has_key?
menyelesaikan pekerjaan, seperti yang dicatat Matz di sini , itu sudah tidak digunakan lagi Hash#key?
.
hash.key?(some_key)
Dalam versi terbaru Ruby Hash instance memiliki key?
metode:
{a: 1}.key?(:a)
=> true
Pastikan untuk menggunakan kunci simbol atau kunci string tergantung pada apa yang Anda miliki di hash Anda:
{'a' => 2}.key?(:a)
=> false
Sangat terlambat tetapi sebaiknya simbol digunakan sebagai kunci:
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
Tetapi ketika membuat hash jika Anda melewatkan string sebagai kunci maka itu akan mencari string dalam kunci.
Tetapi ketika membuat hash Anda melewati simbol sebagai kunci lalu has_key? akan mencari kunci dengan menggunakan simbol.
Jika Anda menggunakan Rails, Anda dapat menggunakannya Hash#with_indifferent_access
untuk menghindari ini; keduanya hash[:my_key]
dan hash["my_key"]
akan menunjuk ke catatan yang sama
Hash#with_indifferent_access
untuk menghindari ini; keduanya :my_key
dan "my_key"
akan menunjuk ke catatan yang sama
Anda selalu dapat menggunakan Hash#key?
untuk memeriksa apakah kunci hadir dalam hash atau tidak.
Jika tidak, itu akan mengembalikan Anda false
hash = { one: 1, two:2 }
hash.key?(:one)
#=> true
hash.key?(:four)
#=> false
Cara lain ada di sini
hash = {one: 1, two: 2}
hash.member?(:one)
#=> true
hash.member?(:five)
#=> false