Thread push
(10 answers)
Opened by Gast at 2008-12-03 13:59
also die Diskussion hat ne überzeugende Antwort produziert, der Punkt scheint dass man bei Prototypes wie sub push(\@@) {} sonst nicht mehr unterscheiden könnte ob push ohne zwoten oder nur mit leerem zwoten parameter aufgerufen würde. [*]
Code (perl): (dl
)
1 2 3 @b=(); push @a; # kein zwoter parameter push @a,@b; # zwoter para ist leere Liste würde die zwote Form zu $_ defaulten bekäme man ganz hässliche Fehler! Builtins wie print und split laufen jedoch nicht über diese prototype Schnittstelle und bekommen ne Sonderbehandlung, und sind deswegen auch nicht überschreibbar. Das sieht man daran das -f prototype hier undef ist. Code (perl): (dl
)
1 2 3 4 5 6 7 DB<7> print prototype "CORE::push" \@@ DB<8> print prototype "CORE::print" DB<9> print prototype "CORE::split" Wollte man das allgemeingültig lösen, müsste man das Prototype-Interface um Defaultoptionen erweitern. So wie es jetzt läuft könnte man nämlich auch push nicht fehlerfrei überschreiben! (beim Aufruf wird einfach ne abgeflache Liste übergeben, die ursprüngliche Zahl der Paras ist verloren, die Überprüfung müsste deswegen schon bei der Compilierung geschehen) me and my writeups
|