Sintaxe :: Palavra-chave :: Reunir

Syntax :: Palavra-chave :: Reúna classe Perl
Baixe Agora

Sintaxe :: Palavra-chave :: Reunir Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Arthur Axel Schmidt
  • Site do editor:
  • http://search.cpan.org/~frew/

Sintaxe :: Palavra-chave :: Reunir Tag


Sintaxe :: Palavra-chave :: Reunir Descrição

Sintaxe :: Palavra-chave :: Reúna classe Perl A Perl 6 fornece uma nova estrutura de controle - Reunir - que permite que listas sejam construídas proceduralmente, sem a necessidade de uma variável temporária. Dentro do bloco / fechamento controlado por um recolhimento qualquer chamada para levar empurra a lista de argumentos de chamada para uma matriz implicitamente criada. Tome devolve o número de elementos que demorou. Sintaxe :: Reunir é um módulo Perl que implementa essa estrutura de controle. No final da execução do bloco, a coleta retorna a lista de valores armazenados na matriz (em um contexto de lista) ou uma referência à matriz (em um contexto escalar). Por exemplo, em vez de escrever: imprimir do {mywanted; enquanto (minha $ linha =) {push @wanted, $ line se $ line = ~ / \ d /; Empurre @WAnted, - $ Line se algum_Outro_Condition ($ line); } push @wanted, 'eof'; junte-se q {,}, @wanted; }; em vez disso podemos escrever: imprimir se juntar q {,}, coletar {while (my line line =) {take $ line se $ line = ~ / \ d /; Take - $ Line se algum_Outro_Condition ($ line); } tomar 'eof'; } e em vez de: meu texto $ = fazer {my $ string; enquanto () {próximo se / ^ # | ^ \ s * $ /; Último IF / ^ __ __ \ N $ /; $ string. = $ _; } $ string; }; Poderíamos escrever: Meu $ text = junte-se q {}, coletar {while () {próximo se / ^ # | ^ \ s * $ /; Último IF / ^ __ __ \ N $ /; Tome $ _; }}; Há também uma terceira função - reunida - que retorna uma referência à matriz implícita sendo coletada. Isso é útil para o manuseio de padrões: meu @odds = Reunir {para @data {tomar $ _ se $ _% 2; tome to_num ($ _) se / $ /; } tomar (1,3,7,9) a menos que seja reunido; } Nota que - como o exemplo acima implica - a função coletada retorna uma referência especial de array Perl 5 que atua como uma referência Perl 6 Array em contextos booleanos, numéricos e string.it também é útil para criar a matriz implícita por algum processo mais complexo do que pelo simples empurrão seqüencial. Por exemplo, se precisássemos prever uma contagem de itens não numéricos: meu @odds = Reunir {para @data {tomar $ _ se $ _% 2; tome to_num ($ _) se / $ /; } não colhido, + grep (/ / i, @data); } Conceitualmente recolher / tomar é a forma generalizada a partir da qual o mapa e o gnep derivam. Isto é, poderíamos implementar essas duas funções como: sub mapa (@) {my $ CODEEF = Shift; meu @list = @ {shift @_}; Retornar Reunir {Take $ CODEEF -> ($ _) para (@list)}; } sub grep (@) {my $ CODEEF = Shift; meu @list = @ {shift @_}; Retornar Reunir {Take $ _ se $ coderef -> ($ _) para @list}; } Um recolhimento também é uma maneira muito útil de curto-circuito a construção de uma lista. Por exemplo, suponha que desejemos gerar uma única lista classificada de linhas de dois arquivos classificados, mas apenas até a primeira linha que eles têm em comum. Poderíamos reunir as linhas assim: meu @merged_diff = reúne {my $ a = <$ fh_a>; Meu $ B = <$ fh_b>; while (1) {if (definido $ a $ b) {if ($ a eq $ b) {Último} # duplicado significa final de lista elsif ($ a lt $ b) {take $ a; $ a = <$ fh_a>; } else {tomar $ b; $ B = <$ fh_b>; }} elsif (definido $ a) {take $ a; $ a = <$ fh_a>; } Elsif (definido $ b) {tomar $ B; $ B = <$ fh_b>; } else {Último}}} Sinopse Use Syntax :: Palavra-chave :: Reunir; My List = Reunir {# tente extrair números ímpares e nomes ímpares ... para (@data) {if (/ (um | três | cinco | sete | nove) $ /) {tomar QQ {'$ _' }} elsif (/ ^ \ \ d + $ / $ _% 2) {TOVE $}}} # mas use o conjunto padrão se não houver qualquer um de ambos ... tome @defaults a menos que sejam reunidos; } Requisitos: · Perl.


Sintaxe :: Palavra-chave :: Reunir Software Relacionado