ทับทิมกัญชา (กัญชา)

กัญชา (กัญชา) มีลักษณะคล้ายกับ "กุญแจ" => "คุณค่า" เช่นคอลเลกชันของคู่คีย์ค่า คล้ายกับอาร์เรย์กัญชา แต่มันจะไม่ จำกัด การใช้งานของตัวเลขดัชนี

กัญชาดัชนี (หรือ "สำคัญ") ได้เกือบวัตถุใด ๆ

อาร์เรย์กัญชาแม้ว่าที่คล้ายกัน แต่มีความแตกต่างที่สำคัญมาก: องค์ประกอบกัญชาอยู่ในลำดับใดไม่มี หากคำสั่งซื้อที่มีความสำคัญแล้วคุณควรใช้อาร์เรย์

สร้างกัญชา

เช่นเดียวกับอาร์เรย์ที่มีความหลากหลายของวิธีการที่แตกต่างกันในการสร้างกัญชาคุณสามารถสร้างกัญชาว่างผ่านวิธีการเรียนใหม่:

months = Hash.new

นอกจากนี้คุณยังสามารถใช้กัญชาใหม่ถูกสร้างขึ้นด้วยค่าเริ่มต้นโดยไม่มีค่าแฮชเริ่มต้นเป็นศูนย์:

months = Hash.new( "month" )

或

months = Hash.new "month"

เมื่อคุณเข้าถึงกัญชาที่มีค่าเริ่มต้นในคีย์ใด ๆ หากคีย์หรือค่าไม่อยู่กลับไปที่ค่าการเข้าถึงกัญชาเริ่มต้น:

#!/usr/bin/ruby

months = Hash.new( "month" )

puts "#{months[0]}"
puts "#{months[72]}"

เรียกเอาท์พุทตัวอย่างข้างต้นคือ

month
month
#!/usr/bin/ruby

H = Hash["a" => 100, "b" => 200]

puts "#{H['a']}"
puts "#{H['b']}"

เรียกเอาท์พุทตัวอย่างข้างต้นคือ

100
200

คุณสามารถใช้วัตถุทับทิมใด ๆ ที่เป็นคีย์หรือค่าหรือสามารถใช้อาร์เรย์เป็นตัวอย่างที่แสดง:

[1,"jan"] => "January"

แฮวิธีในตัว

หากคุณจำเป็นต้องเรียกวิธีแฮคุณจะต้องยกตัวอย่างวัตถุแฮช นี่คือวิธีการที่จะสร้างอินสแตนแฮวัตถุ:

Hash[[key =>|, value]* ] or

Hash.new [or] Hash.new(obj) [or]

Hash.new { |hash, key| block }

นี้จะกลับวัตถุให้เต็มไปด้วยกัญชาใหม่ ตอนนี้ใช้วัตถุที่สร้างขึ้นเราสามารถเรียกวิธีการใด ๆ ที่มีอยู่ ตัวอย่างเช่น:

#!/usr/bin/ruby

$, = ", "
months = Hash.new( "month" )

months = {"1" => "January", "2" => "February"}

keys = months.keys

puts "#{keys}"

เรียกเอาท์พุทตัวอย่างข้างต้นคือ

["1", "2"]

ต่อไปนี้เป็นวิธีกัญชาที่พบบ่อย(สมมติว่าวัตถุกัญชากัญชา):

เลขที่ วิธีการและคำอธิบาย
1 กัญชา == other_hash
ตรวจสอบว่าทั้งสองมีค่าคีย์กัญชาเดียวกันสำหรับจำนวนของคู่ค่าคีย์ที่มีการจับคู่กับแต่ละอื่น ๆ เพื่อตรวจสอบว่าทั้งสอง hashes มีค่าเท่ากัน
2 แฮช. [สำคัญ]
ใช้ค่าอ้างอิงที่สำคัญจากกัญชา ถ้าคีย์ไม่พบแล้วกลับไปเป็นค่าเริ่มต้น
3 แฮช. [สำคัญ] = ค่า
ค่าที่กำหนดค่าของคีย์เกี่ยวข้องกับคีย์ที่กำหนด
4 hash.clear
ลบคีย์ทั้งหมดจากกัญชา
5 hash.default (คีย์ = ไม่มี)
ส่งกลับค่าเริ่มต้นของกัญชาหากไม่ได้กำหนดโดย= เริ่มต้นกลับศูนย์(ถ้าคีย์ไม่อยู่ในกัญชาแล้ว[] จะแสดงค่าเริ่มต้น.)
6 hash.default = obj
ตั้งค่าเริ่มต้นสำหรับกัญชา
7 hash.default_proc
หากกัญชาที่สร้างขึ้นโดยบล็อก,บล็อกกลับ
8 hash.delete (กุญแจ) [หรือ]
array.delete (กุญแจ) {| สำคัญ | บล็อก}
นำออกจากคีย์กัญชาโดยคู่สำคัญหากบล็อกและไม่พบการจับคู่คู่ค่าคีย์ผลของบล็อกจะถูกส่งกลับ เปรียบเทียบกับdelete_if
9 hash.delete_if {| คีย์ค่า | บล็อก }
มันเป็นความจริงสำหรับบล็อกของบล็อกแต่ละลบคีย์จากกัญชา
10 hash.each {| คีย์ค่า | บล็อก }
ทราเวิร์กัญชาที่เรียกว่าครั้งเดียวสำหรับแต่ละบล็อกที่สำคัญผ่านค่าคีย์เป็นอาร์เรย์สององค์ประกอบ
11 hash.each_key {| สำคัญ | บล็อก}
ข้ามผ่านกัญชาสำหรับปุ่มโทรแต่ละครั้งเดียวบล็อกผ่านที่สำคัญเป็นพารามิเตอร์
12 hash.each_key {| key_value_array | บล็อก}
ทราเวิร์กัญชาที่เรียกว่าครั้งเดียวสำหรับแต่ละบล็อกที่สำคัญส่งค่าที่สำคัญและเป็นข้อโต้แย้ง
13 hash.each_value {| ค่า | บล็อก}
ทราเวิร์กัญชาที่เรียกว่าครั้งเดียวสำหรับแต่ละบล็อกที่สำคัญผ่านเป็นค่าพารามิเตอร์
14 hash.empty?
ตรวจสอบว่ากัญชาเป็นที่ว่างเปล่า (ไม่ได้มีคู่ค่าคีย์)และผลตอบแทนจริงหรือเท็จ
15 hash.fetch (คีย์ [เริ่มต้น]) [หรือ]
hash.fetch (กุญแจ) {| สำคัญ | บล็อก}
ค่าตอบแทนจากกัญชาผ่านที่สำคัญที่กำหนดถ้าคุณไม่พบกุญแจและไม่ได้ให้พารามิเตอร์เพิ่มเติมโยนยกเว้นIndexError;ถ้าให้เริ่มต้นกลับเริ่มต้นถ้าบล็อกตัวเลือกผลบล็อกจะถูกส่งกลับ
16 hash.has_key? (กุญแจ) [หรือ] hash.include? (กุญแจ) [หรือ]
hash.key? (กุญแจ) [หรือ] hash.member? (กุญแจ)
ตรวจสอบว่าที่สำคัญที่ได้รับอยู่ในกัญชาผลตอบแทนจริงหรือเท็จ
17 hash.has_value (ค่า)
ตรวจสอบว่ากัญชามีค่าที่กำหนด
18 hash.index (ค่า)
ผลตอบแทนที่ให้ค่าของคีย์กัญชาหากไม่มีการแข่งขันพบผลตอบแทนที่ศูนย์
19 hash.indexes (Keys)
ก็จะส่งกลับอาร์เรย์ใหม่ด้วยคุณค่าของส่วนประกอบที่สำคัญที่กำหนด ไม่สามารถหากุญแจสำคัญในการใส่ค่าเริ่มต้น วิธีการนี้ได้รับการคัดค้านกรุณาใช้เลือก
20 hash.indices (Keys)
ก็จะส่งกลับอาร์เรย์ใหม่ด้วยคุณค่าของส่วนประกอบที่สำคัญที่กำหนด ไม่สามารถหากุญแจสำคัญในการใส่ค่าเริ่มต้น วิธีการนี้ได้รับการคัดค้านกรุณาใช้เลือก
21 hash.inspect
ย้อนกลับพิมพ์กัญชาสตริงรุ่น
22 hash.invert
สร้างกัญชาใหม่กัญชาผกผันของคีย์และค่าในคำอื่น ๆกัญชาใหม่ค่าแฮชจะกลายเป็นกุญแจสำคัญที่ค่าจะกลายเป็นกุญแจสำคัญ
23 hash.keys
สร้างอาร์เรย์ใหม่ด้วยคีย์กัญชา/ td>
24 hash.length
มันกลับมีขนาดจำนวนเต็มกัญชาหรือความยาว
25 hash.merge (other_hash) [หรือ]
hash.merge (other_hash) {| สำคัญ oldval, newval | บล็อก}
ส่งกลับกัญชาใหม่กัญชามีเนื้อหาและother_hash เขียนซ้ำกัญชาสำคัญกับother_hashกับคู่คีย์ซ้ำ
26 hash.merge! (other_hash) [หรือ]
hash.merge (other_hash) {| คีย์ , oldval, newval | บล็อก}
และผสานเดียวกัน แต่จริงกัญชามีการเปลี่ยนแปลง
27 hash.rehash
สร้างใหม่กัญชาตามมูลค่าปัจจุบันของแต่ละคีย์ถ้าคุณใส่ค่าที่มีการเปลี่ยนแปลงการที่จะกัญชาอีกครั้งการจัดทำดัชนี
28 hash.reject {| คีย์ค่า | บล็อก }
ที่เป็นจริงของแต่ละบล็อกกุญแจสำคัญในการสร้างกัญชาใหม่
29 hash.reject! {| คีย์ค่า | บล็อก}
และปฏิเสธเหมือนกันแต่จริงกัญชามีการเปลี่ยนแปลง
30 hash.replace (other_hash)
แทนที่เนื้อหาของกัญชาของother_hash เนื้อหา
วันที่ 31 hash.select {| คีย์ค่า | บล็อก }
ส่งกลับอาร์เรย์ใหม่บล็อกส่งกลับค่าคีย์กัญชาจริงในคู่
32 hash.shift
นำออกจากกัญชาในคู่คีย์และส่งค่าคีย์กลับมาเป็นอาร์เรย์สององค์ประกอบ
33 hash.size
มันกลับแฮจำนวนเต็มของขนาดหรือความยาว
34 hash.sort
กัญชาถูกแปลงเป็นอาร์เรย์สองมิติที่มีอาร์เรย์ค่าคีย์และเรียงลำดับแล้ว
35 hash.store (คีย์ค่า)
กัญชาเก็บไว้ในคู่ค่าคีย์
36 hash.to_a
สร้างอาร์เรย์สองมิติจากกัญชา แต่ละคู่ค่าคีย์เป็นอาร์เรย์อาร์เรย์ทั้งหมดเหล่านี้จะถูกเก็บไว้ในอาร์เรย์
37 hash.to_hash
ผลตอบแทนที่ได้แฮช (ตัวเอง)
38 hash.to_s
กัญชาจะถูกแปลงเป็นอาร์เรย์แล้วอาร์เรย์จะถูกแปลงเป็นสตริง
39 hash.update (other_hash) [หรือ]
hash.update (other_hash) {| สำคัญ oldval, newval | บล็อก}
ส่งกลับกัญชาใหม่กัญชามีเนื้อหาและother_hashเขียนซ้ำกัญชาสำคัญกับother_hash กับคู่คีย์ซ้ำ
40 hash.value (ค่า)
ตรวจสอบว่ากัญชามีค่าที่กำหนด
41 hash.values
ก็จะส่งกลับอาร์เรย์ใหม่ที่มีค่าทั้งหมดของกัญชา
42 hash.values_at (obj, th. )
ก็จะส่งกลับอาร์เรย์ใหม่ที่มีค่าแฮชที่เกี่ยวข้องกับการที่สำคัญที่กำหนด