Contexto :: Preserve.

Código de execução após uma chamada sub-rotina, preservando o contexto que a sub-rotina teria visto se fosse a última instrução no chamador
Baixe Agora

Contexto :: Preserve. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Jonathan Rockway
  • Site do editor:
  • http://search.cpan.org/~jrockway/

Contexto :: Preserve. Tag


Contexto :: Preserve. Descrição

Executar código após uma chamada sub-rotina, preservando o contexto que a sub-rotina teria visto se fosse a última instrução no chamador Contexto :: preservar é um módulo Perl que ajuda você a executar o código após uma chamada sub-rotina, preservando o contexto que a sub-rotina teria visto se fosse a última instrução no chamador.synopsisseve que você já escreveu isso? meu (resultado de $, @result); # Execute um sub no contexto correto se (! Definido SARADARRAY) {Alguns :: Código (); } Elsif (WailarRay) {@result = Alguns :: Código (); } else {$ result = algum :: código (); } # Faça algo depois de alguns :: Código $ _ + = 42 para (@result, $ Result); # Finalmente retorne o valor correto se (! Definido SARADARRAY) {return; } Elsif (WailarRay) {return @result; } else {return $ result; } Agora você pode simplesmente escrever isso: Use contexto :: preservar; Retornar preservar_context {algum :: código ()} após => sub {$ _ + = 42 para @_}; às vezes você precisa chamar uma função, obter os resultados, agir nos resultados e, em seguida, retornar o resultado da função. Isso é doloroso por causa dos contextos; A função original pode se comportar diferente se for chamada em contexto vazio, escalar ou listar. Você pode ignorar os vários casos e apenas escolher um, mas isso é frágil. Para fazer as coisas certas, você precisa ver qual caso você está sendo chamado e, em seguida, ligue para a função nesse contexto. Isso resulta em 3 caminhos de código, que é uma dor para digitar (e manter). Este módulo automatiza o processo. Você fornece um coderef que é a "função original" e outro CODEEF para executar após as execuções originais. Você pode modificar o valor de retorno (aliased para @_) aqui e faça o que mais você precisar fazer. A WailarRay está correta dentro de ambos os Coderefs; Em "Depois", no entanto, o valor de retorno é ignorado e os retornos do Value WailarRay estão relacionados ao contexto que a função original foi chamada. Requisitos: · Perl.


Contexto :: Preserve. Software Relacionado