| Liberación Relefeasonection - Llame a las acciones en la versión. |
Descargar ahora |
Liberación Clasificación y resumen
- Licencia:
- Perl Artistic License
- Nombre del editor:
- Ben Tilly
- Sitio web del editor:
- http://search.cpan.org/~tilly/Text-xSV-0.16/lib/Text/xSV.pm
Liberación Etiquetas
Liberación Descripción
Relefeasonection - Llame a las acciones al liberar. Relefeasonection - Llame a las acciones en la versión. Sessynopsis Use la releasonección 'on_release'; {# OO estilo My $ Handle = releasexion-> Nuevo (Sub {impresión "que sale de Scopen"}); imprimir "en scopen"; } {# Estilo funcional My $ manija = on_release {impresión "saliendo de scopen"}; imprimir "en scopen"; } {My $ Rollback = on_release {rollback_trans ()}; if (do_stuff ()) {$ rollback-> cancelar (); }} Esto proporciona una manera fácil de crear asas opacas que harán algo cuando se destruyan. Hay dos formas de crear un nuevo asa. Ambos toman uno o más argumentos, siendo el primero la acción a tomar cuando se libera el asa y el resto (opcional) es los argumentos que obtendrán el asa. Niew es el constructor orientado al método. My $ Handle = Relefeasexion-> Nuevo (Sub {Imprimir Shift}, "Adiós CRUEL MUNDIAL"); y una función opcional on_release que puede importar. Para aquellos que les gusta ese tipo de cosas, he proporcionado el prototipo @ para el azúcar sintáctico. My $ Handle = ON_RELEASE {IMPRIMIR "Goodbye cruel Worldn"}; y si decide que no desea hacer la acción en la versión después de todo, puede llamar al método Cancelar (). Como se sugiere en la sinopsis, esto es útil si desea configurar mecánicos transaccionales. Haga que la acción de liberación haga su limpieza. Y luego, cuando confirma sus cambios, cancele la limpieza. Ejemplo de uso de la disconeclación 'on_release'; # Esto hace lo mismo que el Módulo SelectSaver. SUB TMP_SELECT {ON_RELEASE {SELECT SHIFT} Seleccione Shift; } Imprimir "Esta impresión va a stdoutn"; {My $ hold_select = tmp_select (* stderr); Imprimir "Esta impresión va a Stvertrn"; } Imprimir "Imprimir a STdout nuevamente"; un ejemplo más largo usa la carpa; Use CWD; Utilice la reacción; Sub CD_TO {CHDIR ($ _ ) o confiesa ("No se puede CHDIR a $ _ : $!"); } Sub TMP_CD {MY $ CWD = CWD (); CD_TO (SHIFT); Liberación-> Nuevo (CD_TO, $ CWD); } Sub algo_interesting {MY $ IN_DIR = TMP_CD ("Some_DIR"); # Haz algo interesante en el nuevo DIR # Voy a regresar automáticamente al viejo DIR # cuando salga de la subrutina y $ in_dir Goald Gout of Scope. } Requisitos: · Perl
Liberación Software relacionado