Wszyscy powinniśmy znać problemy związane z prototypes w Perlu. Oto dwa duże modele:Na ile sposobów można wywołać podprogram i zignorować jego prototyp w Perlu?
- nie działają jak prototypy w innych językach, więc ludzie źle je rozumieją.
- nie mają one zastosowania do wszystkich sposobów wywoływania podprogramu.
Drugi przedmiot to ten, który mnie interesuje w tej chwili.
Znam dwa sposoby obalić/obejścia/ignore wykonanie prototypu przy wywołaniu podprogramu:
- połączeń sub jako metoda.
Foo->subroutine_name();
- Zadzwoń na okręt podwodny z wiodącym znakiem
&
.&subroutine_name();
Czy są jakieś inne interesujące przypadki, które przeoczyłem?
UDPATE:
@brian d Foy, nie szczególnie chcą uniknąć prototypy, ale zastanawiałem się, "jak wiele sposobów są tam, aby to zrobić?" Zadaję to pytanie z ciekawości.
@ jrockway, Zgadzam się z tobą i uważam, że masz jaśniej i bardziej zwięźle opisany mój pierwszy punkt dotyczący problemów z prototypami, że ludzie źle je rozumieją. Być może problem leży w oczekiwaniach programistów, a nie w funkcji. Ale tak naprawdę jest to pytanie filozoficzne, jakiego nie chcę mieć.
To nie jest "problem". Prototypy są wskazówkami dla lexera, a nie ramy sprawdzania poprawności danych. Zrozum to i nie będziesz miał problemów. – jrockway
Odsyłacz do pytania, gdzie jest to omówione bardziej szczegółowo: http://stackoverflow.com/questions/297034/why-are-perl-function-prototypes-bad – Ether
Dlaczego próbujesz ignorować prototyp? –