如何扁平化或字符串化对象(尤其是匹配)?
How to flatten or stringify an object (esp. Match)?
我们如何将 Match(或其他)对象扁平化或字符串化为字符串数据类型(尤其是大量的,即作为数组元素)?例如
'foobar' ~~ m{ (foo) };
say [=10=].WHAT;
my $foo = [=10=];
say $foo.WHAT
(Match)
(Match)
如何结束(Str)
?
Str
takes any Cool
value as argument, including a regex Match
对象的构造函数。
'foobar' ~~ m{ (foo) };
say [=10=].WHAT; # (Match)
say [=10=].Str.WHAT; # (Str)
只需将对象视为字符串即可。
如果您对 value/object 应用字符串操作,Raku 几乎总是会自动将其强制转换为字符串。
字符串操作包括print
和put
等函数,中缀eq
和~
连接等运算符,.starts-with
或.chop
、插值,例如“包含 $variable
的字符串”,以及专用的强制转换程序,例如 .Str
和 Str(...)
.
一个Match
对象包含一个整体匹配。任何“子项”(sub-matches) 都只是对整个匹配项的子字符串的捕获。所以没有必要压平任何东西,因为你可以只处理单个整体匹配。
Match
个对象的列表是一个列表。列表本身就是一个对象。如果将字符串操作应用于列表,则会得到列表的元素,每个元素之间用 space 进行字符串化。
所以:
'foobar' ~~ m{ (f) (o) (o) };
put $/; # foo
put $/ eq 'foo'; # True
put $/ ~ 'bar'; # foobar
put $/ .chop; # fo
put "[$/]"; # [foo]
put $/ .Str; # foo
my Str() $foo = $/;
say $foo.WHAT; # (Str)
put 'foofoo' ~~ m:g{ (f) (o) (o) }; # foo foo
'foobar' ~~ m{ (foo) };
say ~[=10=]
将直接强制转换为 Str
。如果你有很多比赛,你可以使用它,我。即:
'foobar' ~~ m{ (f)(o)(o) };
say $/.map: ~*; # (f o o)
我们如何将 Match(或其他)对象扁平化或字符串化为字符串数据类型(尤其是大量的,即作为数组元素)?例如
'foobar' ~~ m{ (foo) };
say [=10=].WHAT;
my $foo = [=10=];
say $foo.WHAT
(Match)
(Match)
如何结束(Str)
?
Str
takes any Cool
value as argument, including a regex Match
对象的构造函数。
'foobar' ~~ m{ (foo) };
say [=10=].WHAT; # (Match)
say [=10=].Str.WHAT; # (Str)
只需将对象视为字符串即可。
如果您对 value/object 应用字符串操作,Raku 几乎总是会自动将其强制转换为字符串。
字符串操作包括print
和put
等函数,中缀eq
和~
连接等运算符,.starts-with
或.chop
、插值,例如“包含 $variable
的字符串”,以及专用的强制转换程序,例如 .Str
和 Str(...)
.
一个Match
对象包含一个整体匹配。任何“子项”(sub-matches) 都只是对整个匹配项的子字符串的捕获。所以没有必要压平任何东西,因为你可以只处理单个整体匹配。
Match
个对象的列表是一个列表。列表本身就是一个对象。如果将字符串操作应用于列表,则会得到列表的元素,每个元素之间用 space 进行字符串化。
所以:
'foobar' ~~ m{ (f) (o) (o) };
put $/; # foo
put $/ eq 'foo'; # True
put $/ ~ 'bar'; # foobar
put $/ .chop; # fo
put "[$/]"; # [foo]
put $/ .Str; # foo
my Str() $foo = $/;
say $foo.WHAT; # (Str)
put 'foofoo' ~~ m:g{ (f) (o) (o) }; # foo foo
'foobar' ~~ m{ (foo) };
say ~[=10=]
将直接强制转换为 Str
。如果你有很多比赛,你可以使用它,我。即:
'foobar' ~~ m{ (f)(o)(o) };
say $/.map: ~*; # (f o o)