in reply to RFC: Class::Proxy::MethodChain
Sometimes it's amazing how simple things can really turn out to be. At Re^5: RFC: Class::Proxy::MethodChain I said
[H]ow I long for the beauty of saying something likeThen I went on to abuse map to almost get there. Well, guess what - I can emulate the exact same thing (modulo syntax) in three lines Perl 5 that could hardly be simpler:given(Gtk::FileDialog->new()) { .ok_button.label("Load"); .cancel_button.label("Exit"); .connect_signal(destroy => sub { ... }); # ... }
which lets me writesub for_obj( local $_ = shift; shift->(); $_; }
my $window = for_obj(Gtk::Window->new("toplevel"), sub { $_->signal_connect(delete => sub { Gtk->exit(0) }); $_->set_title("Test"); $_->border_width(15); $_->add(for_obj(Gtk::Button->new("Quit") ,sub { $_->signal_connect(clicked => sub { Gtk->exit(0) }); $_->show; }); $_->show; });
It can be that simple. Even the snippet at multiple method calls against the same object (f.ex GUI programming) is a dozen times more effort than necessary. (I added an update there pointing here.)
I really need to get a handle on my hubris..
Update: or simply
sub for_obj { $_[1]->() for $_[0]; $_[0] }
Makeshifts last the longest.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: RFC: Class::Proxy::MethodChain
by adrianh (Chancellor) on Feb 26, 2003 at 00:10 UTC | |
by Aristotle (Chancellor) on Feb 26, 2003 at 07:09 UTC | |
by adrianh (Chancellor) on Feb 26, 2003 at 10:29 UTC | |
by Aristotle (Chancellor) on Feb 27, 2003 at 19:35 UTC | |
Re: Re: RFC: Class::Proxy::MethodChain
by Juerd (Abbot) on Feb 26, 2003 at 07:30 UTC | |
by Aristotle (Chancellor) on Feb 27, 2003 at 19:32 UTC | |
Re: Re: RFC: Class::Proxy::MethodChain
by sauoq (Abbot) on Feb 26, 2003 at 00:58 UTC |
In Section
Meditations