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?

Иван Бишевац
sumber

Jawaban:

305

Buat hash:

hash = {:item1 => 1}

Tambahkan item baru ke dalamnya:

hash[:item2] = 2
menggonggong
sumber
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}
Alexander
sumber
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

shilovk
sumber
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}
Niklas B.
sumber
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. 
KrisT
sumber
0

Buat hash sebagai:

h = Hash.new
=> {}

Sekarang masukkan ke dalam hash sebagai:

h = Hash["one" => 1]
Ravi Kashyap
sumber
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