[Generale] Re: [Tecnica] Perl e strutture dati multidimensionali
Szymon Stefanek
pragma a siena.linux.it
Gio 23 Nov 2006 00:53:04 GMT
On Thursday 23 November 2006 01:18, Alex M4DC4T wrote:
> "Quindi l'array esterno è un array di references e l'array interno è
> "puntato" dagli elementi di quello interno."
> forse doveva essere
> "Quindi l'array esterno è un array di references e l'array interno è
> "puntato" dagli elementi di quello ESTERNO.
Si, hai ragione: devo forzarmi a rileggere due volte le mail prima di
inviarle.
Cmq se mi hai corretto vuol dire che ti torna :)
> Ma praticamente il fatto che non si possano in perl fare array multi
> dimensionali (oltre i due dimensionali, tramite "trucco" dei references,
> che poi non mi sembrano ugualmente bidimensionali, ma solo con una
> reference....) significa che difficilmente si possono fare matrici
> multidimensionali?
Un array a più di una dimensione è sostanzialmente assimilabile ad una
matrice. Anzi, per generalizzare, diciamo che è solo una questione di "nomi"
ma in realtà parliamo delle stesse cose.
Array multidimensionale è una collezione di elementi ordinati
ed indicizzabile tramite N indici.
Il nome comune "array" (senza specificare le dimensioni) viene solitamente
associato ad una collezione indicizzabile tramite un singolo indice ovvero un
vettore (ovvero una matrice di dimensione 1). Il nome comune "matrice" si
associa facilmente alla collezione indicizzabile da due indici e
rappresentabile mediante una griglia rettangolare di oggetti ovvero un array
bidimensionale. In tre dimensioni non vi è un nome canonico e dobbiamo
dire "array a tre dimensioni" oppure "matrice a tre dimensioni"...
Nsomma, son la stessa cosa, via. Il nome scelto dipende solo dal contesto
di partenza...
Inoltre si possono simulare array a dimensione maggiore di 2 (o matrici, se
preferisci) sempre con lo stesso trucco.
$interno_interno[10] = 1;
$interno[4] = \@interno_interno;
$esterno[2] = \@interno;
print $esterno[2]->[4]->[10];
> E comunque anche nell'ultimo aggiornamento del programma rimangono le cose
> in questo modo?
Le vecchie versioni del perl erano messe peggio di così.
Nelle ultime versioni, invece, son stati aggiunti i references
e i vari trucchi sintattici che ti permettono appunto
di scrivere
$esterno[2][4][10] = 1;
Nota che così sembra proprio una matrice di dimensione 3...
...in realtà internamente è un "array di reference ad array di
reference ad array di scalari".
--
Szymon Stefanek
------------------------------------------------------------------------------
-
- Black holes were created when God divided by 0
-
------------------------------------------------------------------------------
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome: non disponibile
Tipo: application/pgp-signature
Dimensione: 189 bytes
Descrizione: non disponibile
Url: http://liste.siena.linux.it/pipermail/generale/attachments/20061123/23c342f5/attachment-0001.pgp
Maggiori informazioni sulla lista
Generale