2012-03-05 12 views
136

Jestem nowy w Ruby i nie wiem jak dodać nowy element do już istniejącego skrótu. Na przykład, pierwszy zbudować hash:Jak dodać nowy element do haszu

hash = {:item1 => 1} 

po tym a chcesz dodać ITEM2 więc po to mam hash takiego:

{:item1 => 1, :item2 =>2} 

nie wiem jaka metoda to zrobić na hash, czy ktoś mógłby mi pomóc?

+5

@ ИванБишевац W razie wątpliwości, należy skonsultować [dokumentacji] (http://ruby-doc.org/core-1.9.3/Hash .html # method-i-5B-5D-3D). –

Odpowiedz

225

Utwórz skrót:

hash = {:item1 => 1} 

dodać nowy element do niego:

hash[:item2] = 2 
25

Jest to tak proste, jak:

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} 
54

Jeśli chcesz dodać nowe elementy z innego hash - użyj merge metody:

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

W Twoim konkretnym przypadku może to być:

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

ale nie jest rozsądnie używać go, gdy powinieneś dodać tylko jeden element więcej.

Zwróć uwagę, że merge zastąpi wartości z istniejących kluczy:

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

dokładnie jak hash[:item1] = 2

Ponadto należy zwrócić uwagę, że merge sposób (oczywiście) nie ma wpływu na wartość początkową zmiennej hash - zwraca nowy scalony hash. Jeśli chcesz, aby zastąpić wartość zmiennej hash następnie użyć merge! zamiast:

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

Utwórz skrót jako:

h = Hash.new 
=> {} 

teraz wstawić do hash jako:

h = Hash["one" => 1] 
+1

Jeśli spróbujesz wstawić wiele klawiszy w ten sposób, zobaczysz, że za każdym razem tworzysz nowy skrót. Prawdopodobnie nie tego chcesz. A jeśli to jest to, czego chcesz, nie potrzebujesz części 'Hash.new' niezależnie, ponieważ' Hash [] 'już tworzy nowy skrót. – philomory

1
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. 
14

hash.store (klucz, wartość) - Przechowuje parę klucz-wartość w haszdzie.

przykład:

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

Documentation

Powiązane problemy