Re: GdkRectangle, again

On Tue, 29 Apr 2003, muppet wrote:

Chas Owens said:
sub get : lvalue {

wow, that's really handy!  unfortunately, the docs say it's still
experimental.  can we trust it not to change?  [i got burned on the threading

muppet <scott at asofyet dot org>

No, it has already changed to "is rw" in Apocalypse 6, but you should be able to continue using " : lvalue " 
for the rest of Perl 5's life.

<snip href="";>
Lvalue Subroutines

Lvalue subroutines return a "proxy" object that can be assigned to. It's known as a proxy because the object 
usually represents the purpose or outcome of the subroutine call.

Subroutines are specified as being lvalue using the is rw trait.

An lvalue subroutine may return a variable:

    my $lastval;
    sub lastval () is rw { return $lastval }

or the result of some nested call to an lvalue subroutine:

    sub prevval () is rw { return lastval() }

or a specially tied proxy object, with suitably programmed FETCH and STORE methods:

    sub checklastval ($passwd) is rw {
        my $proxy is Proxy(
                FETCH => sub ($self) {
                            return lastval();
                STORE => sub ($self, $val) {
                            die unless check($passwd);
                            lastval() = $val;
        return $proxy;

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]