Contexto :: Preserve

código de ejecución después de una llamada de subrutina, preservando el contexto que la subrutina habría visto si era la última declaración en la persona que llama
Descargar ahora

Contexto :: Preserve Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Perl Artistic License
  • Precio:
  • FREE
  • Nombre del editor:
  • Jonathan Rockway
  • Sitio web del editor:
  • http://search.cpan.org/~jrockway/

Contexto :: Preserve Etiquetas


Contexto :: Preserve Descripción

Ejecutar código después de una llamada de subrutina, preservando el contexto que la subrutina habría visto si era la última declaración en la persona que llama Contexto :: Preserve es un módulo PERL que le ayuda a ejecutar el código después de una llamada de subrutina, preservando el contexto que la subrutina habría visto si fue la última declaración en el llamante.synopsishave, ¿alguna vez escribiste esto? mi ($ resultado, @Result); # Ejecutar un sub en el contexto correcto si (! Definido Wantarray) {Algunos :: Código (); } Elsif (Wantarray) {@Result = Algunos :: Código (); } else {$ resultado = algunos :: Código (); } # Haz algo después de algunos :: Código $ _ + = 42 para (@Result, $ Result); # Finalmente devuelve el valor correcto si (! Definido Wantarray) {return; } Elsif (Wantarray) {Return @Result; } else {devuelve $ resultado; } Ahora, solo puede escribir esto en su lugar: use el contexto :: Preserve; Devolver Preserve_Context {algunos :: Código ()} After => Sub {$ _ + = 42 para @_}; A veces necesitas llamar a una función, obtener los resultados, actuar sobre los resultados, luego devolver el resultado de la función. Esto es doloroso debido a contextos; La función original puede comportarse diferente si se llama en el contexto de void, escalar o en la lista. Puedes ignorar los diversos casos y simplemente elegir uno, pero eso es frágil. Para hacer las cosas, debe ver en qué caso le llaman, y luego llame a la función en ese contexto. Esto da como resultado 3 rutas de código, que es un dolor para escribir (y mantener). Este módulo automatiza el proceso. Usted proporciona un CODEREF que es la "Función original", y otro CODEREF para ejecutarse después de las ejecuciones originales. Puede modificar el valor de retorno (alias hasta @_) aquí, y hacer lo que sea que tenga que hacer. WestArray es correcto dentro de ambos coderefs; Sin embargo, en "Después", sin embargo, el valor de retorno se ignora y el valor WantRay Returns está relacionado con el contexto en el que se llamó la función original. Requisitos: · Perl


Contexto :: Preserve Software relacionado