Todos deberíamos estar familiarizados con los problemas relacionados con prototypes en Perl. Aquí están los dos biggies:¿De cuántas maneras puede llamar a una subrutina e ignorar su prototipo en Perl?
- no funcionan como prototipos en otros idiomas, por lo que la gente no los entiende.
- no se aplican a todas las formas de llamar a una subrutina.
El segundo artículo es el que tengo curiosidad por el momento.
Conozco dos maneras de subvertir/evitar/ignore la aplicación de prototipo cuando se llama a una subrutina:
- ir al sub como método.
Foo->subroutine_name();
- Llame al submarino con un sigil principal
&
.&subroutine_name();
¿Hay algún otro caso interesante que me haya perdido?
udpate:
@ Brian d Foy, yo no quiero particularmente para evadir prototipos, pero se preguntó "cuántas maneras hay para hacerlo?" Hago esta pregunta por curiosidad.
@jrockway, estoy de acuerdo contigo, y creo que tienes más explícita y más concisamente descrito mi primer punto con respecto a los problemas con los prototipos, que la gente los malinterpreta. Quizás el problema radique en las expectativas del programador y no en la característica. Pero esa es realmente una pregunta filosófica del tipo que no quiero tener.
Esto no es un "problema". Los prototipos son pistas para el lexer, no un marco de validación de datos. Comprende eso y no tendrás problemas. – jrockway
Referencia cruzada a la pregunta donde se trata esto con más detalle: http://stackoverflow.com/questions/297034/why-are-perl-function-prototypes-bad – Ether
¿Por qué intenta ignorar un prototipo? –