[Dresden-pm] closures again :)

Torsten Werner email at twerner42.de
Fre Aug 5 12:36:19 PDT 2005


Hallo Leute,


ich bin gerade von einer Woche Perlintensivkurs im Linuxhotel in Essen
zurück gekommen. Ich fand zwar, es hätte eine Idee intensiver sein
können, aber trotzdem war es klasse. Und ich habe eine ziemlich geniale
Anwendung von Closures (juchhu!) gefunden. Den Code gibt es unter
http://nopaste.debianforum.de/757 .

Zunächst kann man sich Zeile 44 anschauen:

$window->signal_connect('destroy', \&Gtk2::main_quit);

Das ist ein klassischer Callback mit Referenz auf eine Subroutine, wie
man es auch aus C mit Funktionszeigern kennt. Bei richtiger
objektorientierter Programmierung will man aber Callbacks auf
Objektmethoden haben wie in Zeile 21:

$self->{button}->signal_connect('clicked', sub { $self->action });

Das 2. Argument ist eine Closure, die genau das realisiert. Ganz einfach
mit Standard-Perl ohne absurde Trickserei oder schwierige Bibliotheken.
Ich finde das genial.


Viele Grüße und schönes Wochenende,
Torsten