Bagaimana cara menambahkan item baru ke hash


177

Saya baru di Ruby dan tidak tahu cara menambahkan item baru ke hash yang sudah ada. Sebagai contoh, pertama saya membuat hash:

hash = {item1: 1}

setelah itu ingin menambahkan item2 jadi setelah ini saya punya hash seperti ini:

{item1: 1, item2: 2}

Saya tidak tahu metode apa yang harus dilakukan pada hash, dapatkah seseorang membantu saya?

Jawaban:


305

Buat hash:

hash = {:item1 => 1}

Tambahkan item baru ke dalamnya:

hash[:item2] = 2

7
Gunakan gabungan! metode hash.merge!(item2: 2)untuk menggabungkan dan menyimpan nilai !
maguri

3
@maguri hash.merge!(item2: 2)melakukan lebih lambat dibandingkan hash[:item2] = 2ketika hanya ada satu argumen
Rahul Dess

72

Jika Anda ingin menambahkan item baru dari mergemetode hash lain - gunakan :

hash = {:item1 => 1}
another_hash = {:item2 => 2, :item3 => 3}
hash.merge(another_hash) # {:item1=>1, :item2=>2, :item3=>3}

Dalam kasus spesifik Anda itu bisa:

hash = {:item1 => 1}
hash.merge({:item2 => 2}) # {:item1=>1, :item2=>2}

tetapi tidak bijaksana untuk menggunakannya ketika Anda harus menambahkan hanya satu elemen lagi.

Perhatikan yang mergeakan mengganti nilai dengan kunci yang ada:

hash = {:item1 => 1}
hash.merge({:item1 => 2}) # {:item1=>2}

tepat seperti hash[:item1] = 2

Anda juga harus memperhatikan bahwa mergemetode (tentu saja) tidak mempengaruhi nilai asli dari variabel hash - ia mengembalikan hash yang baru digabung. Jika Anda ingin mengganti nilai variabel hash, gunakan merge!sebaliknya:

hash = {:item1 => 1}
hash.merge!({:item2 => 2})
# now hash == {:item1=>1, :item2=>2}

35

hash.store (key, value) - Menyimpan pasangan nilai kunci dalam hash.

Contoh:

hash   #=> {"a"=>9, "b"=>200, "c"=>4}
hash.store("d", 42) #=> 42
hash   #=> {"a"=>9, "b"=>200, "c"=>4, "d"=>42}

Documentation


27

Sesederhana:

irb(main):001:0> hash = {:item1 => 1}
=> {:item1=>1}
irb(main):002:0> hash[:item2] = 2
=> 2
irb(main):003:0> hash
=> {:item1=>1, :item2=>2}


4
hash_items = {:item => 1}
puts hash_items 
#hash_items will give you {:item => 1}

hash_items.merge!({:item => 2})
puts hash_items 
#hash_items will give you {:item => 1, :item => 2}

hash_items.merge({:item => 2})
puts hash_items 
#hash_items will give you {:item => 1, :item => 2}, but the original variable will be the same old one. 

0

Buat hash sebagai:

h = Hash.new
=> {}

Sekarang masukkan ke dalam hash sebagai:

h = Hash["one" => 1]

2
Jika Anda mencoba memasukkan beberapa kunci dengan cara ini, Anda akan melihat bahwa Anda sebenarnya membuat hash baru setiap kali. Mungkin bukan yang Anda inginkan. Dan jika itu adalah apa yang Anda inginkan, Anda tidak perlu Hash.newbagian terlepas, karena Hash[]sudah menciptakan hash baru.
philomory
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.