Domanda

Attività: per creare l'hash usando la mappa, dove le chiavi sono gli elementi dell'array dato @a e i valori sono i primo elementi dell'elenco restituiti da alcune funzioni f ($ element_of_a):

my @a = (1, 2, 3);
my %h = map {$_ => (f($_))[0]} @a;

Tutto bene fino a F () non restituisce un elenco vuoto (è assolutamente corretto per f () e in quel caso vorrei assegnare un undef). L'errore potrebbe essere riprodotto con il seguente codice:

my %h = map {$_ => ()[0]} @a;

L'errore stesso suona come "numero dispari di elementi nell'assegnazione hash". Quando riscrivo il codice 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 dovrei risolverlo: ottenere i primi elementi di elenco restituiti da f (), quando l'elenco restituito è vuoto?

La versione perl è 5.12.3

Grazie.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top