# Hash e array

**URL:** <https://www.ruby-forum.com/t/hash-e-array/109821>\
**Category:** IT\
**Created:** [July 19, 2007, 11:18am UTC](https://www.ruby-forum.com/t/hash-e-array/109821 "2007-07-19T11:18:02Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lucea](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ea5d25/32.png) [@Lucea](https://www.ruby-forum.com/u/Lucea)\
**Post date:** [July 19, 2007, 11:18am UTC](https://www.ruby-forum.com/t/hash-e-array/109821/1 "2007-07-19T11:18:02Z")

</div>

Salve a tutti!  
Ho un problema con gli array e gli hash

Ho un hash bidimensionale di array fatto in questo modo (in cui gli  
array  
sono tutti uguali tra loro per ogni indice)

hsh[x][y]  
=\> [a,b,c,d]  
hsh[m][n]  
=\> [a,b,c,d]  
hsh[a][b]  
=\> [a,b,c,d]

Quello che voglio fare è cancellare un elemento dall’array per un  
determinato indice. Uso il metodo delete:

hsh[x][y].delete(a)

Quello che vorrei ottenere è

hsh[x][y]  
=\> [b,c,d]  
hsh[m][n]  
=\> [a,b,c,d]  
hsh[a][b]  
=\> [a,b,c,d]

Quello che invece ottengo  
è:  
hsh[x][y]  
=\> [b,c,d]  
hsh[m][n]  
=\> [b,c,d]  
hsh[a][b]  
=\> [b,c,d]

Sapete dirmi perché vengono cancellati anche dagli altri elementi?  
Dimenticavo, l’hash è stato definito  
così:  
hash\_builder = proc { |h,k| h[k] = Hash.new(&hash\_builder) }  
hsh = Hash.new(&hash\_builder)

Grazie a tutti.  
Silvia

---

<div class="post-metadata">

**Author:** ![Lucea](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ea5d25/32.png) [@Lucea](https://www.ruby-forum.com/u/Lucea)\
**Post date:** [July 19, 2007, 1:24pm UTC](https://www.ruby-forum.com/t/hash-e-array/109821/2 "2007-07-19T13:24:19Z")

</div>

Così a caldo mi sembra che in realtà gli array ai quali le chiavi del tuo  
hash puntano sono in realtà lo stesso oggetto.  
Fai questa verifica:  
hsh[x][y].id # =\> un numerone  
hsh[m][n].id # =\> altro numerone (?)

Se gli id sono gli stessi sai dove sta il problema: hai assegnato lo  
stesso oggetto e vorrai fare un Array#dup quando li assegni.

---

<div class="post-metadata">

**Author:** ![Lucea](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ea5d25/32.png) [@Lucea](https://www.ruby-forum.com/u/Lucea)\
**Post date:** [July 19, 2007, 1:40pm UTC](https://www.ruby-forum.com/t/hash-e-array/109821/3 "2007-07-19T13:40:20Z")

</div>

On Thu, 19 Jul 2007 13:35:50 +0200, Lucea wrote:

> Era proprio quello il problema! Grazie mille per l’aiuto!  
> Silvia

🙂

---

<div class="post-metadata">

**Author:** ![Lucea](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ea5d25/32.png) [@Lucea](https://www.ruby-forum.com/u/Lucea)\
**Post date:** [July 19, 2007, 1:37pm UTC](https://www.ruby-forum.com/t/hash-e-array/109821/4 "2007-07-19T13:37:20Z")

</div>

Era proprio quello il problema! Grazie mille per l’aiuto!  
Silvia
