[ruby-it] Hash con due elementi come chiave
Pierpaolo Sanna
pierpaolo.sanna a gmail.com
Ven 5 Dic 2008 21:30:42 CET
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.
io utilizzo questa forma
h = Hash.new {|h,k| h[k] = []}
perchè così non devo preoccuparmi di fare i controlli sulla chiave prima di
appendere un elemento nell'array , cioè posso semplicamente fare così
h["nouva chiave"] << "elemento da appendere"
in questo modo se la chiave è già presente, il nuovo elemento viene accodato
all'array, se la chiave non è presente viene creato un nuovo array e poi
inserito l'elemento
altrimenti dovrei fare così
if h.has_key?("nouva chiave")
h << "elemento da appendere"
else
h["nuova chiave] = []
h["nuova chiave] << "elemento da appendere"
end
2008/12/5 Njna Njna <v_orecchia a hotmail.com>
> ok ma quando basta mettere Hash{} e quando invece è necessario
> specificare tra parentesi una cosa del genere? {|h,k| h[k] = []}
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Ml mailing list
> Ml a lists.ruby-it.org
> http://lists.ruby-it.org/mailman/listinfo/ml
>
More information about the Ml
mailing list