[ruby-it] Hash con due elementi come chiave
gabriele renzi
surrender_it a yahoo.it
Ven 5 Dic 2008 22:27:39 CET
> From: Pierpaolo Sanna <pierpaolo.sanna a gmail.com>
> To: ml a lists.ruby-it.org
> Sent: Friday, 5 December, 2008 21:30:42
> Subject: Re: [ruby-it] Hash con due elementi come chiave
>
> Prima ho espresso un pò male il concetto. Con
>
> Hash.new(obj)
>
> viene ustao lo stesso oggetto (obj) per tutti i valori di default. Invece
> con
>
> Hash.new {|h,k| ....}
>
> ogni volta che richiedi il valore di una chiave non ancora presente
> nell'hash viene chiamato il blocco, che dovrebbe restituire il valore di
> default, ma in questo caso è un oggetto differente di volta in volta.
Aggiungo: probabilmente non ti sei mai scontrato con il problema perché usavi come valore predefinito un oggetto immutabile, ad esempio un numero.
Per cui facendo
hsh = Hash.new(0)
hsh[:foo] +=1
puts hsh[:foo], hsh[:bar] #=> 1 0
In questo caso non stavi modificando l'oggetto "0" ma lo stavi sostituendo con l'oggetto "1", mentre nel caso degli array il cambiamento avveniva nell'oggetto immagazzinato come valore.
More information about the Ml
mailing list