Як додати новий елемент до хешу


177

Я новачок у Ruby і не знаю, як додати новий елемент до вже наявного хешу. Наприклад, спочатку я сконструюю хеш:

hash = {item1: 1}

після цього хочу додати item2, тому після цього у мене є такий хеш:

{item1: 1, item2: 2}

Я не знаю, який метод робити на хеш, хтось може мені допомогти?

Відповіді:


305

Створіть хеш:

hash = {:item1 => 1}

Додайте до нього новий елемент:

hash[:item2] = 2

7
Використовуйте злиття! метод hash.merge!(item2: 2)для об'єднання і збереження значення !
магурі

3
@maguri hash.merge!(item2: 2)працює повільніше порівняно з тим, hash[:item2] = 2коли є лише один аргумент
Рахул Десс

72

Якщо ви хочете додати нові елементи з іншого хешу - використовуйте mergeметод:

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

У вашому конкретному випадку це може бути:

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

але не розумно використовувати його, коли вам слід додати лише один елемент більше.

Зверніть увагу, що mergeзамінять значення наявними ключами:

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

точно так само hash[:item1] = 2

Також слід звернути увагу, що mergeметод (звичайно) не впливає на початкове значення хеш-змінної - він повертає новий об'єднаний хеш. Якщо ви хочете замінити значення хеш-змінної, використовуйте merge!замість цього:

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

35

hash.store (ключ, значення) - зберігає пару ключових значень у хеші.

Приклад:

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

Documentation


27

Це так просто, як:

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

Створіть хеш як:

h = Hash.new
=> {}

Тепер вставте в хеш як:

h = Hash["one" => 1]

2
Якщо ви спробуєте вставити кілька клавіш таким чином, ви побачите, що ви кожен раз створюєте новий хеш. Напевно, не те, що ти хочеш. І якщо це те, що ви хочете, Hash.newчастина вам не потрібна , бо Hash[]це вже створює новий хеш.
філоморія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.