Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re: multiple method calls against the same object, revisited

by TimToady (Parson)
on Dec 25, 2004 at 18:51 UTC ( #417421=note: print w/replies, xml ) Need Help??

in reply to multiple method calls against the same object, revisited

In Perl 6 that's probably written like this:
given "toplevel" ) { .signal_connect( :delete{ Gtk2.main_quit } ); .set_title( "Test" ); .border_width( 15 ); .add( given "Quit" ) { .signal_connect( :clicked{ Gtk2.main_quit } ); $_; } ); .show_all; }
Though I could see extending the but operator to take a topicalized closure so we don't have to put the ugly $_ at the end: "toplevel" ) but { .signal_connect( :delete{ Gtk2.main_quit } ); .set_title( "Test" ); .border_width( 15 ); .add( "Quit" ) but { .signal_connect( :clicked{ Gtk2.main_quit } ); } ); .show_all; }
Merry Christmas!!!

Replies are listed 'Best First'.
Re^2: multiple method calls against the same object, revisited
by Aristotle (Chancellor) on Dec 25, 2004 at 23:26 UTC

    Yeah, I knew that Perl6 would make that much nicer in the form of your first example. :-) I have to say that the but example is a lot nicer, though. Lovely!

    Except it's going to be a while yet. :-( So some way to make this nicer in Perl5 will have to do for the time being. Of my attempts so far I think this is by far the most likeable.

    Makeshifts last the longest.

Re^2: multiple method calls against the same object, revisited
by gaal (Parson) on Dec 25, 2004 at 19:27 UTC
    Pascal! :)

    Maybe an "on a" modifier?

    .signal_connect( :clicked{ Gtk2.main_quit } ) on "Quit" );

    Indirect object syntax would make that sounds even more like English. But this is probably stretching it too far anyway.

      But how would you do multiple calls against the same thing?

      { .signal_connect( :delete{ Gtk2.main_quit } ); .set_title( "Test" ); .border_width( 15 ); .add( .signal_connect( :clicked{ Gtk2.main_quit } ) on Gtk2::Butto "Quit" ) ); .show_all; } on "toplevel" );

      There is a simple analogon in Perl5:

      my $window = map { $_->signal_connect( delete_event => sub { Gtk2->main_quit } ); $_->set_title( "Test" ); $_->set_border_width( 15 ); $_->add( map { $_->signal_connect( clicked => sub { Gtk2->main_quit } ); $_; } Gtk2::Button->new( "Quit" ) ); $_->show_all(); $_; } Gtk2::Window->new( "toplevel" );

      Meh. It puts things in the wrong order IMO.

      Makeshifts last the longest.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://417421]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (13)
As of 2016-10-24 16:46 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (309 votes). Check out past polls.