-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[61] Qual è la differenza tra "delete" e "undef" con gli hash?

Gli hash contengono coppie di scalari: il primo è la chiave, il secondo il valore. La chiave sarà convertita in una stringa, sebbene il valore possa essere qualunque tipo di scalare: stringa, numero o riferimento. Se una chiave $chiave è presente in %hash, exists($hash{$chiave}) restituirà vero. Il valore per una data chiave può essere indefinito, nel qual caso $hash{$chiave} sarà indefinito mentre exists $hash{$chiave} restituirà vero. Questo accade nel caso in cui l'hash contiene ($chiave, undef).

Le figure aiutano... ecco la tabella di %hash:

	 chiavi valori
	+------+------+
	|  a   |  3   |
	|  x   |  7   |
	|  d   |  0   |
	|  e   |  2   |
	+------+------+

E valgono queste condizioni

	$hash{'a'}                       e` vero
	$hash{'d'}                       e` falso
	defined $hash{'d'}               e` vero
	defined $hash{'a'}               e` vero
	exists $hash{'a'}                e` vero (solo Perl5)
	grep ($_ eq 'a', keys %hash)     e` vero

Se ora eseguite

	undef $hash{'a'}

la vostra tabella diventa:

	 chiavi valori
	+------+------+
	|  a   | undef|
	|  x   |  7   |
	|  d   |  0   |
	|  e   |  2   |
	+------+------+

ed ora valgono queste condizioni; i cambiamenti in maiuscolo:

	$hash{'a'}                       e` FALSO
	$hash{'d'}                       e` falso
	defined $hash{'d'}               e` vero
	defined $hash{'a'}               e` FALSO
	exists $hash{'a'}                e` vero (solo Perl5)
	grep ($_ eq 'a', keys %hash)     e` vero

Notate le ultime due: avete un valore indefinito ma una chiave definita!

Ora, considerate questo:

	delete $hash{'a'}

la vostra tabella ora contiene:

	 chiavi valori
	+------+------+
	|  x   |  7   |
	|  d   |  0   |
	|  e   |  2   |
	+------+------+

ed ora valgono queste condizioni; i cambiamenti in maiuscolo:

	$hash{'a'}                       e` falso
	$hash{'d'}                       e` falso
	defined $hash{'d'}               e` vero
	defined $hash{'a'}               e` falso
	exists $hash{'a'}                e` FALSO (solo Perl5)
	grep ($_ eq 'a', keys %hash)     e` FALSO

Guardate, l'intera riga è sparita!

vedi in inglese

AUTORE E COPYRIGHT

Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan Torkington. Tutti i diritti riservati.

Questa documentazione è libera; puoi ridistribuirla e/o modificarla secondo gli stessi termini applicati al Perl.

Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di codice in questo file sono rilasciati al pubblico dominio. Potete, e siete incoraggiati a farlo, utilizzare il presente codice o qualunque forma derivata da esso nei vostri programmi per divertimento o per profitto. Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese ma non è obbligatorio.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google