③ Das direkte Verändern von Parametern ist sehr unperlig.
Das direke verändern ist in unzähligen Funktionen enthalten.
chomp() mal nur als Beispiel.
• Nachteile:
‣ Du handelst dir Probleme mit versteckten Zustand und Nebenwirkungen ein,
‣ vernichtest zukünftige Möglichkeiten der Compileroptimierung (Stichpunkt Unveränderlichkeit) und
‣ erhöhst das Risiko der Eintrittsvarianz beträchtlich.
• Vorteile: Keine.
Oh doch: Speicher. Aber das ist bald alles.
Aber einen Nachteil hast du nicht aufgezählt:
somefunc(\"literal");
sub somefunc{
my $scalarref = shift;
$$scalarref = "newvalue"; # ERROR
# oder auch
$$_[0] = "newvalue"; # ERROR
}
Tipp.
Die Übergabe von Hashes oder Hashreferenzen erachte ich als auch bei prozeduraler Programmierung als Tugend, nicht nur in OOP.
Sie machen ein Upgrade von Funktionen möglich, ohne dass man jede Funktionsverwendung upgraden muss.
some_sub( {
scalarvar=>'scalar',
arrayvar=>[1,2,3],
hashvar=>{x=>1}
} );
mfg Beat
--
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische