在类型系统中§

有关特征 is rw,请参阅上下文中的主要文档

sub trait_mod:<is>(Mu:U $type:$rw!)

类上的 特征 is rw 将在该类的所有公共属性上创建可写访问器方法。

class C is rw {
    has $.a;
};
my $c = C.new.a = 42;
say $c# OUTPUT: «42␤»

在例程中§

有关trait is rw的更多信息,请参阅上下文中的主要文档

multi trait_mod:<is>(Routine $r:$rw!)

当使用此特征修改例程时,其返回值将是可写的。例如,这在返回变量或哈希或数组的可写元素时非常有用

sub walk(\thing*@keysis rw {
    my $current := thing;
    for @keys -> $k {
        if $k ~~ Int {
            $current := $current[$k];
        }
        else {
            $current := $current{$k};
        }
    }
    $current;
}
 
my %hash;
walk(%hash'some''key'12= 'autovivified';
 
say %hash.raku;

产生

("some" => {"key" => [Any, [AnyAny"autovivified"]]}).hash

请注意,return 会将返回值标记为只读;如果您需要从 is rw 例程提前退出,则必须改用 return-rw