http://qs1969.pair.com?node_id=418061


in reply to Re: Mutator chaining considered harmful
in thread Mutator chaining considered harmful

Apart from kappa's points: read my root node update. Here's what that would look like with a good interface:

my $s = Scope->new( 'probe' => $netlist ); $s->anatrace( in => [ 'System input', 'active', 1 ], out_1 => [ 'Lpf bank1', 'active', 1 ], out_2 => [ 'Lpf bank2', 'active', 1024 ], out => [ 'System output', 'active', 1 ], bank2 => [ 'Switch pos', 'active', 1 ], ); $s->generate();

Makeshifts last the longest.

Replies are listed 'Best First'.
Re^3: Mutator chaining considered harmful
by toma (Vicar) on Dec 29, 2004 at 21:29 UTC
    I suppose I could also use this :-)
    my $s = Scope->new( probe => $netlist ) ->anatrace( in => [ 'System input', 'active', 1 ], out_1 => [ 'Lpf bank1', 'active', 1 ], out_2 => [ 'Lpf bank2', 'active', 1024 ], out => [ 'System output', 'active', 1 ], bank2 => [ 'Switch pos', 'active', 1 ], ) ->generate();
    The => after the first arguments look nice, especially since the first arguments are instance handles, and I use them as a hash key.

    In this example the arguments to anatrace really aren't mutators, they are constructors of sub-objects. They are waveforms being added to a scope display.

    update
    Is the problem that you perceive just with mutators, or does it also apply to sub-object constructors? Can you provide examples of acceptable method chaining, and contrast it with problematic method chaining?

    It should work perfectly the first time! - toma