In Cool§

有关 例程 substr-rw 的主要文档,请参阅 in context

multi method substr-rw(|) is rw
multi        substr-rw(|) is rw

将调用者(或在子表单中,第一个参数)强制转换为 Str,并使用参数调用 Str.substr-rw

In Allomorph§

有关 方法 substr-rw 的主要文档,请参阅 in context

method substr-rw(Allomorph:D \SELF: $start = 0$want = Whatever)

在调用者的 Str 值上调用 Str.substr-rw

In Str§

有关 方法 substr-rw 的主要文档,请参阅 in context

method substr-rw($from$length = *)

substr 的一个版本,它返回一个 Proxy,充当对字符串变量一部分的可写引用。它的第一个参数 $from 指定字符串中应从其进行替换的索引,其最后一个参数 $length 指定要替换的字符数。如果未指定,$length 默认为字符串的长度。

例如,在其方法形式中,如果要获取字符串 "abc" 并用字母 "z" 替换第二个字符(索引为 1),则执行以下操作

my $string = "abc";
$string.substr-rw(11= "z";
$string.say;                         # OUTPUT: «azc␤»

请注意,也可以插入新字符

my $string = 'azc';
$string.substr-rw(20= "-Zorro-"# insert new characters BEFORE the character at index 2 
$string.say;                         # OUTPUT: «az-Zorro-c␤»

substr-rw 还有一个函数形式,因此上面的示例也可以这样编写

my $string = "abc";
substr-rw($string11= "z";
$string.say;                          # OUTPUT: «azc␤» 
substr-rw($string20= "-Zorro-";
$string.say;                          # OUTPUT: «az-Zorro-c␤»

还可以为 substr-rw 返回的可写引用创建别名以进行重复操作

my $string = "A character in the 'Flintstones' is: barney";
$string ~~ /(barney)/;
my $ref := substr-rw($string$0.from$0.to-$0.from);
$string.say;
# OUTPUT: «A character in the 'Flintstones' is: barney␤» 
$ref = "fred";
$string.say;
# OUTPUT: «A character in the 'Flintstones' is: fred␤» 
$ref = "wilma";
$string.say;
# OUTPUT: «A character in the 'Flintstones' is: wilma␤»