Sintaxis :: Palabra clave :: Reunir

Sintaxis :: Palabra clave :: Reunir la clase Perl
Descargar ahora

Sintaxis :: Palabra clave :: Reunir Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Perl Artistic License
  • Precio:
  • FREE
  • Nombre del editor:
  • Arthur Axel Schmidt
  • Sitio web del editor:
  • http://search.cpan.org/~frew/

Sintaxis :: Palabra clave :: Reunir Etiquetas


Sintaxis :: Palabra clave :: Reunir Descripción

Sintaxis :: Palabra clave :: Reunir la clase Perl PERL 6 proporciona una nueva estructura de control: recopilando, que permite que las listas se construyan de manera procesal, sin la necesidad de una variable temporal. Dentro del bloque / cierre controlado por una recopilación de cualquier llamada para tomar presiona la lista de argumentos de llamada a una matriz creada implícitamente. Tomar devuelve el número de elementos que tomó. Sintaxa:: Palabra clave :: Reunir es un módulo PERL que implementa esa estructura de control. En el final de la ejecución del bloque, la recopilación devuelve la lista de valores almacenados en la matriz (en un contexto de la lista) o una referencia a la matriz (en un contexto escalar). Por ejemplo, en lugar de escribir: imprimir do {my @wanted; Mientras (MIS $ LINE =) {PUSH @WANTED, $ LINE SI $ LINE = ~ / \ D /; Push @Wanted, - $ línea si alguien_other_condition (línea de línea); } Push @Wanted, 'EOF'; Únete a Q ^ {,}, @Wanted; }; en su lugar, podemos escribir: impresión Únase a Q {,}, recopilando {MIENTRAS (MIS $ LINE =) {TOMAR $ LINE IF $ = ~ / \ D /; tomar - $ la línea si alguien_other_condition (línea); } Tomar 'eof'; } y en lugar de: My $ Text = do {My $ String; MIENTRAS () {Siguiente IF / ^ # | ^ \ S * $ /; Último if-^ __ __ \ N $ /; $ cadena. = $ _; } $ string; }; Podríamos escribir: My $ Text = Únase a Q {}, recopilamos {MIENTRAS () {Siguiente IF / ^ # | ^ \ S * $ /; Último if-^ __ __ \ N $ /; tomar $ _; }}; También hay una tercera función, reunida, que devuelve una referencia a la matriz implícita que se está recopilando. Esto es útil para manejar los valores predeterminados: mi @odds = recopilar {para @data {tomar $ _ si $ _% 2; Tome to_num ($ _) if $ /; } tomar (1,3,5,7,9) a menos que se recopile; } Tenga en cuenta que, como lo indica el ejemplo anterior, la función recopilada devuelve una referencia especial de la matriz PERL 5 que actúa como una referencia de matriz Perl 6 en contextos booleanos, numéricos y de cadena. También es útil para crear la matriz implícita por algún proceso. Más complejo que por simple empuje secuencial. Por ejemplo, si necesitábamos preparar un conteo de elementos no numéricos: mi @odds = recopilación {para @data {tomar $ _ si $ _% 2; Tome to_num ($ _) if / $ /; } sin navegación reunida, + grep (/ / i, @data); } Conceptualmente recopilar / tomar es la forma generalizada de la cual se deriva tanto el mapa como del GREP. Es decir, podríamos implementar esas dos funciones como: MAP (@) {MY $ CODEREF = CAMBIO; mi @list = @ {shift @_}; retorno recopilando {tome $ CODEREF -> ($ _) para (@list)}; } SUB GREP (@) {MY $ CODEREF = CAMBIO; mi @list = @ {shift @_}; retorno recopilando {tomar $ _ _ _ {1} CODEREF -> ($ _) para @list}; } Una reunión es también una forma muy práctica de cortocircuitar la construcción de una lista. Por ejemplo, supongamos que queríamos generar una única lista de líneas ordenadas de dos archivos ordenados, pero solo hasta la primera línea que tienen en común. Podríamos reunir las líneas como esta: mi @merged_diff = reunir {My $ A = <$ fh_a>; My $ b = <$ fh_b>; Mientras (1) {if (definido $ A definido $ b) {if ($ a eq $ b) {Último} # Duplicar significa final de la lista Elsif ($ A LT $ B) {TOMAR $ A; $ a = <$ fh_a>; } else {toma $ b; $ b = <$ fh_b>; }} Elsif (definido $ A) {TOMAR $ A; $ a = <$ fh_a>; } Elsif (definido $ b) {tomar $ b; $ b = <$ fh_b>; } else {Último}}} Synopsis Use Sintaxis :: Palabra clave :: Reunirse; Mi @list = recopilando {# intente extraer números impares y nombres de números impares ... para (@data) {if (/ / uno | tres | cinco | siete | nueve) $ /) {tomar qq {'$ _' }} Elsif (/ ^ \ D + $ / $ _% 2) {TOMAR $ _}} # Pero use el conjunto predeterminado si no hay ninguno de los cuales ... Tome @Defaults a menos que se recopile; } Requisitos: · Perl


Sintaxis :: Palabra clave :: Reunir Software relacionado