Sintassi :: Parola chiave :: Raccogliere

Sintassi :: Parola chiave :: Raccogliere la classe perl
Scarica ora

Sintassi :: Parola chiave :: Raccogliere Classifica e riepilogo

Annuncio pubblicitario

  • Rating:
  • Licenza:
  • Perl Artistic License
  • Prezzo:
  • FREE
  • Nome editore:
  • Arthur Axel Schmidt
  • Sito web dell'editore:
  • http://search.cpan.org/~frew/

Sintassi :: Parola chiave :: Raccogliere Tag


Sintassi :: Parola chiave :: Raccogliere Descrizione

Sintassi :: Parola chiave :: Raccogliere la classe Perl Perl 6 fornisce una nuova struttura di controllo: raccogliere - che consente di costruire elenchi di essere costruiti proceduralmente, senza la necessità di una variabile temporanea. All'interno del blocco / chiusura controllato da un rallentamento di qualsiasi chiamata da effettuare spinge che l'elenco degli argomenti di chiamata a un array creato implicitamente. Prendi restituisce il numero di elementi che ha impiegato. Sintassi :: Parola chiave :: Raccogli è un modulo Perl che implementa quella struttura di controllo. La fine dell'esecuzione del blocco, il raccordo restituisce l'elenco dei valori memorizzati nell'array (in un contesto di elenco) o un riferimento all'array (in un contesto scalare). Per esempio, invece di scrivere: stampa fare {my @want; while (My $ LINE =) {PUSH @WANTED, $ LINE se $ LINE = ~ / \ D /; spingere @Wanted, - $ LINE se alcuni_other_Condition ($ LINE); } spingere @Wanted, 'EOF'; Iscriviti a q {,}, @wanted; }; invece possiamo scrivere: stampa Iscriviti q {,}, raccogli {while (my $ LINE =) {Take $ LINE se $ LINE = ~ / \ D /; Take - $ LINE se alcuni_other_Condition ($ LINE); } prendere 'EOF'; } E invece di: My $ Text = Do {My $ String; while () {next if / ^ # | ^ \ s * $ /; Ultimo if / ^ __ __ \ N $ /; $ string. = $ _; } $ stringa; }; Potremmo scrivere: My $ Text = Join Q {}, raccogli {while () {successivo IF / ^ # | ^ S * $ /; Ultimo if / ^ __ __ \ N $ /; prendere $ _; }}; C'è anche una terza funzione - raccolta - che restituisce un riferimento all'array implicito raccolto. Questo è utile per la gestione dei valori predefiniti: il mio @odds = Raccogli {per @Data {Take $ _ se $ _% 2; Prendi TO_NUM ($ _) se / $ /; } prendere (1,3,5,7,9) se non riuniti; } Si noti che, come suggerisce l'esempio sopra - la funzione raccolta restituisce un riferimento di array perl 5 speciale che agisce come un riferimento array perl 6 in modo booleano, numerico e stringa contexts.it anche a portata di mano per creare l'array implicito da parte di qualche processo più complesso che con semplice spinta sequenziale. Ad esempio, se avessimo bisogno di premere un conteggio di elementi non numerici: il mio @odds = Raccogli {per @Data {Take $ _ se $ _% 2; Take to_num ($ _) se / $ /; } Unshift riuniti, + grep (/ / I, @Data); } Concettualmente raccogliere / prendere è il modulo generalizzato da cui deriva sia la mappa che il grep. Cioè, potremmo implementare queste due funzioni come: Sub Map (@) {My $ coderef = shift; my @list = @ {shift @_}; return Gather {Take $ coderef -> ($ _) per (@list)}; } sub grep (@) {my $ coderef = shift; my @list = @ {shift @_}; return Gather {Take $ _ se $ coderef -> ($ _) per @list}; } Un riunione è anche un modo molto comodo di cortocircuito la costruzione di una lista. Ad esempio, supponiamo che volessero generare un singolo elenco ordinato di linee da due file ordinati, ma solo fino alla prima riga che hanno in comune. Potremmo raccogliere le linee come questo: il mio @merged_diff = raccogli {my $ a = <$ fh_a>; My $ B = <$ fh_b>; while (1) {se (definito $ a definito $ B) {IF ($ A EQ $ B) {ultimo} # duplicato significa fine elenco ELSIF ($ A lt $ B) {prendi $ A; $ a = <$ fh_a>; } else {prendi $ B; $ B = <$ fh_b>; }} ELSIF (definito $ A) {prendi $ a; $ a = <$ fh_a>; } ELSIF (definito $ B) {prendi $ B; $ B = <$ fh_b>; } else {ultimo}}} sinossi Utilizzare la sintassi :: Parola chiave :: Raccogliere; My @List = Raccogli {# tenta di estrarre numeri dispari e nomi dei numeri dispari ... per (@Data) {if (/ (uno | tre | cinque | sette | nove) $ /) {prendi QQ {'$ _' }} ELSIF (/ ^ \ D + $ / $ _% 2) {Take $ _}} # Ma usa il set predefinito se non ci sono nessuno ... prendere @defaults se non raccolti; } Requisiti: · Perl.


Sintassi :: Parola chiave :: Raccogliere Software correlato