On Tue, 2005-05-10 at 15:52, Joshua Gatcomb wrote:
> I am wondering what the proper behavior of binding to a sub's return
> value should be
> 
> sub some_routine {
>     my $foo = 42;
>     return $foo;
> }
> my $rv := some_routine();
> 
> Should $rv be bound to $foo or to a copy of $foo?  I ask because with
> state() and closures, it makes a difference since the value can
> change.

Yes, so let's pose an easy, full example with a result we can point at:

        my $x = 1;
        my $y := (->{$x}).();
        $x++;
        say $y;

Ok, so clearly that prints 1 or 2 (the first person to say it's a
junction gets the mean look ;)

Some questions I'd add to yours:

      * We discussed auto-closurizing := statements before, so when does
        that happen vs. performing the operation and taking the value
        exactly?
      * If the above prints 2, then how do you return a value that is a
        constant "safely"? Do you need to explicitly invoke a cloning
        operation on it?
      * How can I talk you out of it? ;-)

-- 
Aaron Sherman <[EMAIL PROTECTED]>
Senior Systems Engineer and Toolsmith
"It's the sound of a satellite saying, 'get me down!'" -Shriekback


Reply via email to