ฉันต้องการตรวจสอบว่ามีคีย์ "ผู้ใช้" อยู่หรือไม่ในเซสชันแฮช ฉันจะทำสิ่งนี้ได้อย่างไร
โปรดทราบว่าฉันไม่ต้องการตรวจสอบว่าค่าของคีย์เป็นศูนย์หรือไม่ ฉันแค่ต้องการตรวจสอบว่ามีคีย์ "ผู้ใช้" อยู่หรือไม่
ฉันต้องการตรวจสอบว่ามีคีย์ "ผู้ใช้" อยู่หรือไม่ในเซสชันแฮช ฉันจะทำสิ่งนี้ได้อย่างไร
โปรดทราบว่าฉันไม่ต้องการตรวจสอบว่าค่าของคีย์เป็นศูนย์หรือไม่ ฉันแค่ต้องการตรวจสอบว่ามีคีย์ "ผู้ใช้" อยู่หรือไม่
คำตอบ:
Hash
's key?
วิธีบอกคุณว่าคีย์ที่กำหนดเป็นปัจจุบันหรือไม่
session.key?("user")
ในขณะที่Hash#has_key?
ได้รับงานทำเป็นแมทซ์ตั้งข้อสังเกตที่นี่Hash#key?
จะได้รับการคัดค้านในความโปรดปรานของ
hash.key?(some_key)
ในล่าสุดทับทิมรุ่นอินสแตนซ์แฮมี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
แต่เมื่อสร้างแฮชถ้าคุณส่งสตริงเป็นคีย์มันจะค้นหาสตริงในคีย์
แต่เมื่อสร้างแฮชคุณจะใช้สัญลักษณ์เป็นกุญแจแล้วมีคีย์? จะค้นหากุญแจโดยใช้สัญลักษณ์
หากคุณใช้ Rails คุณสามารถใช้Hash#with_indifferent_access
เพื่อหลีกเลี่ยงปัญหานี้ ทั้งสองhash[:my_key]
และhash["my_key"]
จะชี้ไปที่ระเบียนเดียวกัน
Hash#with_indifferent_access
เพื่อหลีกเลี่ยงปัญหานี้ ทั้งสอง:my_key
และ"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 the has_key? วิธีการตรวจสอบว่ากุญแจอยู่ในแฮช ไวยากรณ์ที่จะใช้คือ:
YourHash.has_key? :yourkey