Compito: creare un hash usando la mappa, dove le chiavi sono gli elementi dell'array dato @a, e i valori sono gli primi elementi restituiti da qualche funzione f ($ element_of_a):Perl: mapping al primo elemento degli elenchi
my @a = (1, 2, 3);
my %h = map {$_ => (f($_))[0]} @a;
Tutto il bene fino a quando f() restituisce un elenco vuoto (che è assolutamente corretto per f(), e in quel caso mi piacerebbe assegnare undef). L'errore potrebbe essere riprodotto con il seguente codice:
my %h = map {$_ =>()[0]} @a;
l'errore stesso suona come "numero dispari di elementi in assegnazione hash". Quando ho riscrivere il codice in modo tale che:
my @a = (1, 2, 3);
my $s =()[0];
my %h = map {$_ => $s} @a;
o
my @a = (1, 2, 3);
my %h = map {$_ => undef} @a;
Perl non si lamenta affatto.
Quindi, come devo risolvere questo: ottenere i primi elementi dell'elenco restituiti da f(), quando l'elenco restituito è vuoto?
Perl versione è 5.12.3
Grazie.
Avvolgere la chiamata a 'f' in modo che quando si restituisce una lista vuota, fornite' undef' o in altro modo il primo elemento della lista è tornato. –