L'espressione "operatore goatse" o l'idioma =()=
in Perl causa la valutazione di un'espressione nel contesto dell'elenco.L'operatore segreto di Perl Goatse è efficiente?
Un esempio è:
my $str = "5 and 4 and a 3 and 2 1 BLAST OFF!!!";
my $count =()= $str =~ /\d/g; # 5 matches...
print "There are $count numbers in your countdown...\n\n";
Come ho Interprete l'uso, questo è ciò che accade:
$str =~ /\d/g
soddisfa tutte le cifre. Lo switchg
e il contesto elenco producono un elenco di tali corrispondenze. Lascia che questo sia l'esempio di "List Producer", e in Perl questo potrebbe essere molte cose.- il
=()=
causa un'assegnazione a una lista vuota, quindi tutte le corrispondenze effettive vengono copiate in una lista vuota. - L'assegnazione in contesto scalare a $ conteggio dell'elenco prodotta nel 2. dà il conteggio della lista o il risultato di 5.
- Il conteggio di riferimento della lista vuota
=()=
va a zero dopo l'assegnazione scalare. La copia degli elementi della lista viene quindi cancellata da Perl.
Le domande in materia di efficienza sono questi:
- Mi sbaglio nel modo in cui sto l'analisi di questo?
- Se si dispone di un produttore di elenchi e tutto ciò di cui si è interessati è il conteggio, esiste un modo più efficiente per farlo?
Funziona alla grande con questa lista banale, ma cosa succede se la lista era centinaia di migliaia di partite? Con questo metodo stai producendo una copia completa di ogni partita, cancellandola solo per contarli.
Non è efficiente quanto progettare un microchip personalizzato per implementare il programma. – jrockway
Perché il voto negativo? Non è questa una bella domanda sul compromesso tra efficienza e idioma? – dawg
Spiacente, non ho potuto resistere all'identificatore di tag per '[goatse]'. : Gli elenchi D – Ether