class Proxy

Item container with custom storage and retrieval

class Proxy {}

A Proxy is an object that allows you to execute whenever a value is retrieved from a container (FETCH) or when it is set (STORE). Please note that Proxy can introduce mutability at places where it would break behaviour, e.g. in Hash keys.

To create a container that returns twice of what was stored in it, you do something like this:

sub double() is rw {
    my $storage = 0;
    Proxy.new(
        FETCH => method ()     { $storage * 2    },
        STORE => method ($new{ $storage = $new },
    )
 }
 my $doubled := double();
 $doubled = 4;
 say $doubled;       # OUTPUT: «8␤» 

Methods

method new

method new(:&FETCH!:&STORE! --> Proxy:D)

Creates a new Proxy object. &FETCH is called with one argument (the proxy object) when the value is accessed, and must return the value that the fetch produces. &STORE is called with two arguments (the proxy object, and the new value) when a new value is stored in the container.

Type Graph

Type relations for Proxy
perl6-type-graph Proxy Proxy Any Any Proxy->Any Mu Mu Any->Mu

Expand above chart