Thread prototypes (try/catch)
(3 answers)
Opened by betterworld at 2003-09-24 23:39
[quote=betterworld,24.09.2003, 21:39]Ich finde das aber etwas komisch insofern, als dass da im Prototyp &@ steht, obwohl doch ueberhaupt kein Array als zweites Argument uebergeben wird.[/quote]
Das @-Zeichen in der Prototypen-Definition steht auch nicht fuer ein Array sondern fuer eine Liste. Eine Subroutine mit Codereferenz- und Array-Prototyp wuerde so aussehen: Hier mal ein Versuch einer Definition Code (perl): (dl
)
sub catch (&) { $_[0] } Erstes Argument == Rueckgabewert, d.h. die anonyme Subroutine die catch beim Aufruf erhaelt Code: (dl
)
{ /phooey/ and print "unphooey\n"; } wird auch gleich wieder von catch zurueck gegeben. Code (perl): (dl
)
1 2 3 4 5 6 7 8 sub try (&@) { my($try,$catch) = @_; eval { &$try }; if ($@) { local $_ = $@; &$catch; } } try nimmt auch als erstes Argument eine anonyme Subroutine entgegen gefolgt von einer Liste. Die anonymous Sub ist: Code (perl): (dl
)
{ die "phooey"; } Die Liste die try entgegen nimmt enthaelt nur den Rueckgabewert von catch (Codereferenz bzw. anonymous Subroutine). ,,Das perlt aber heute wieder...'' -- Dittsche
|