Ruby Hash
Hash ialah koleksi pasangan kunci-nilai seperti "kunci" => "nilai". Cincang adalah serupa dengan tatasusunan, kecuali pengindeksannya tidak terhad kepada menggunakan nombor.
Indeks (atau "kunci") Hash boleh menjadi hampir semua objek.
Walaupun Hash adalah serupa dengan tatasusunan, ia mempunyai perbezaan penting: elemen Hash tidak mempunyai susunan tertentu. Jika pesanan adalah penting maka gunakan tatasusunan.
Mencipta Cincang
Seperti tatasusunan, terdapat pelbagai cara untuk mencipta cincang. Anda boleh mencipta cincang kosong melalui kaedah kelas baharu:
months = Hash.new
Anda juga boleh mencipta cincang dengan dan tanpa lalai menggunakan baharu Cincang ialah tiada :
months = Hash.new( "month" ) 或 months = Hash.new "month"
Apabila anda mengakses mana-mana kunci dalam cincang dengan nilai lalai, mengakses cincang akan mengembalikan nilai lalai jika kunci atau nilai tidak wujud:
#!/usr/bin/ruby months = Hash.new( "month" ) puts "#{months[0]}" puts "#{months[72]}"
Hasil keluaran contoh di atas ialah:
month month
#!/usr/bin/ruby H = Hash["a" => 100, "b" => 200] puts "#{H['a']}" puts "#{H['b']}"
Hasil keluaran kejadian di atas ialah:
rreeeAnda boleh gunakan sebarang objek Ruby sebagai kunci atau nilai, malah tatasusunan, seperti yang ditunjukkan dalam contoh berikut:
100 200
Kaedah terbina dalam Cincang
Jika anda perlu memanggil kaedah Hash, anda perlu membuat Instantiate objek Hash terlebih dahulu. Begini cara untuk mencipta tika objek Hash:
[1,"jan"] => "January"
Ini akan mengembalikan cincangan baharu yang diisi dengan objek yang diberikan. Sekarang, menggunakan objek yang dicipta, kita boleh memanggil mana-mana kaedah yang tersedia. Contohnya:
Hash[[key =>|, value]* ] or Hash.new [or] Hash.new(obj) [or] Hash.new { |hash, key| block }
Hasil keluaran contoh di atas ialah:
#!/usr/bin/ruby $, = ", " months = Hash.new( "month" ) months = {"1" => "January", "2" => "February"} keys = months.keys puts "#{keys}"
Berikut ialah kaedah cincang awam (dengan mengandaikan bahawa cincang ialah objek Hash):
Nombor siri | Kaedah & Penerangan |
---|---|
1 | cincang == other_hash Semak sama ada dua cincang mempunyai bilangan pasangan nilai kunci yang sama dan sama ada pasangan nilai kunci sepadan antara satu sama lain untuk menentukan sama ada dua cincang itu adalah sama. |
2 | cincang.[kunci] Gunakan kunci untuk merujuk nilai daripada cincang. Jika kunci tidak ditemui, nilai lalai dikembalikan. |
3 | cincang.[key]=value Letakkan nilai yang diberikan oleh nilai dan kunci Kunci yang diberikan dikaitkan. |
4 | hash.clear Mengalih keluar semua pasangan nilai kunci daripada cincang. |
5 | cincang.default(key = nil) Mengembalikan nilai lalai cincang jika tidak Jika ditetapkan melalui lalai=, tiada akan dikembalikan. (Jika kunci tidak wujud dalam cincang, [] mengembalikan nilai lalai.) |
6 | hash.default = obj menetapkan nilai lalai untuk cincang. |
7 | hash.default_proc Jika cincang dicipta melalui blok, mengembalikan blok itu. |
8 | hash.delete(key) [atau] array.delete(key) { |key| block } Alih keluar pasangan nilai kunci daripada cincang melalui kunci. Jika blok digunakan dan tiada pasangan nilai kunci yang sepadan ditemui, hasil blok itu dikembalikan. Bandingkan ini dengan delete_if. |
9 | hash.delete_if { |key,value| block } ialah blok dengan true Setiap blok, alih keluar pasangan nilai kunci daripada cincang. |
10 | cincang.setiap { |kunci,nilai| blok } Lintas cincang untuk setiap kunci memanggil blok sekali, menghantar nilai kunci sebagai tatasusunan dua elemen. |
11 | cincang.kekunci_setiap { |kunci| blok } Lintas cincang untuk setiap kunci memanggil blok sekali, melepasi kunci sebagai parameter. |
12 | hash.each_key { |key_value_array| block } Traverse cincang untuk setiap kunci memanggil blok sekali, menghantar kunci dan nilai sebagai parameter. |
13 | hash.each_value { |value| block } Traverse hash untuk setiap kunci memanggil blok sekali, melepasi nilai sebagai parameter. |
14 | cincang.kosong? Periksa sama ada cincangan kosong (tidak mengandungi pasangan nilai kunci) dan kembalikan benar atau palsu. |
15 | hash.fetch(key [, lalai] ) [atau] hash.fetch(key) { | Mengembalikan nilai daripada cincang diberi kunci yang diberikan. Jika kunci tidak ditemui dan tiada parameter lain disediakan, pengecualian IndexError dilemparkan jika lalai diberikan, lalai dikembalikan; ;Jika blok pilihan ditentukan, hasil blok dikembalikan. |
16 | hash.has_key?(key) [atau] hash.include?(key) [or] hash.key?( kunci) [atau] hash.member?(key) Menyemak sama ada kunci yang diberikan wujud dalam cincang, mengembalikan benar atau salah . |
17 | hash.has_value?(value) Menyemak sama ada cincangan mengandungi nilai yang diberikan. |
18 | hash.index(value) mengembalikan cincangan dalam nilai yang diberikan kunci, atau nihil jika tiada nilai yang sepadan ditemui. |
19 | hash.indexes(keys) Mengembalikan tatasusunan baharu yang terdiri daripada nilai-nilai kunci yang diberikan. Kekunci yang tidak ditemui akan mempunyai nilai lalai yang dimasukkan. Kaedah ini telah ditamatkan, sila gunakan pilih. |
20 | hash.indices(keys) Mengembalikan tatasusunan baharu yang terdiri daripada nilai-nilai kunci yang diberikan. Kekunci yang tidak ditemui akan mempunyai nilai lalai yang dimasukkan. Kaedah ini telah ditamatkan, sila gunakan pilih. |
21 | cincang.periksa Mengembalikan versi rentetan bercetak cincang. |
22 | hash.invert Mencipta cincang baharu, menyongsangkan cincang kunci dan nilai dalam . Iaitu, dalam cincang baharu, kunci dalam cincang akan menjadi nilai, dan nilai akan menjadi kunci. |
23 | hash.keys Mencipta tatasusunan baharu dengan kekunci dalam cincang. /td> |
24 | cincang.panjang Mengembalikan saiz atau panjang cincang dalam bentuk integer . |
25 | hash.merge(other_hash) [atau] hash.merge(other_hash) { |key, oldval, newval| mengembalikan cincang baharu yang mengandungi kandungan cincang dan cincang_lain, menulis semula kunci dengan kunci pendua dalam cincang dan pasangan nilai cincang_lain. |
26 | hash.merge!(other_hash) [atau] hash.merge!(other_hash) { |key, oldval, newval| blok } adalah sama seperti gabungan, tetapi sebenarnya cincangan telah berubah. |
27 | hash.rehash Membina semula cincang berdasarkan nilai semasa setiap kunci . Jika nilai berubah selepas sisipan, kaedah ini akan mengindeks semula cincang. |
28 | cincang.tolak { |kunci, nilai| blok } ialah sekat ialah true mencipta cincang baharu untuk setiap pasangan nilai kunci. |
29 | cincang.tolak { |kunci, nilai|blok } adalah sama dengan tolak<🎜. >, Tetapi sebenarnya cincangan telah berubah. |
cincang.ganti(other_hash)Gantikan kandungan hash dengan kandungan hash_lain. | |
31 | cincang.pilih { |kunci, nilai| blok } Mengembalikan tatasusunan baharu, diwakili oleh blok Mengembalikan pasangan nilai kunci dalam cincang benar. |
32 | hash.shift Mengalih keluar pasangan nilai kunci daripada cincang dan mengalihkan Key- pasangan nilai dikembalikan sebagai tatasusunan dua elemen. |
33 | cincang.saiz mengembalikan saiz cincang dalam integer bentuk atau panjang. |
34 | cincang.sort Menukar cincang kepada tatasusunan dua dimensi yang mengandungi pasangan nilai kunci tatasusunan dan kemudian menyusunnya. |
35 | hash.store(kunci, nilai) menyimpan pasangan nilai kunci dalam cincang . |
36 | hash.to_a Buat tatasusunan dua dimensi daripada cincang. Setiap pasangan nilai kunci ditukar kepada tatasusunan dan semua tatasusunan ini disimpan dalam tatasusunan. |
37 | hash.to_hash mengembalikan hash(diri). |
38 | hash.to_s Tukar cincang kepada tatasusunan, dan kemudian tukar tatasusunan itu kepada rentetan. |
39 | hash.update(other_hash) [atau] hash.update(other_hash) {|key, oldval, newval| mengembalikan cincang baharu yang mengandungi kandungan cincang dan cincang_lain, menulis semula cincang dengan cincang_lain pasangan nilai kunci dengan kunci pendua. |
40 | hash.value?(value) Semak jika hash mengandungi yang diberikan nilai. |
41 | nilai hash Mengembalikan tatasusunan baharu yang mengandungi semua nilai cincang. |
42 | hash.values_at(obj, ...) Mengembalikan tatasusunan baharu yang mengandungi hash< Nilai dalam 🎜> dikaitkan dengan kunci yang diberikan. |