perl6 是否可以在匹配中使用联结?
perl6 Is using junctions in matching possible?
是否可以使用联结来匹配联结中的任何值?我想匹配数组中的任何值。正确的做法是什么?
lisprog$ perl6
To exit type 'exit' or '^D'
> my @a=<a b c>
[a b c]
> any(@a)
any(a, b, c)
> my $x=any(@a)
any(a, b, c)
> my $y = "a 1"
a 1
> say $y ~~ m/ $x /
False
> say $y ~~ m/ "$x" /
False
> my $x = any(@a).Str
any("a", "b", "c")
> say $y ~~ m/ $x /
False
> say $y ~~ m/ || $x /
False
> say $y ~~ m/ || @a /
「a」
>
谢谢!!
连接并不意味着被插入到正则表达式中。它们旨在用于普通的 Perl 6 表达式,特别是比较运算符(例如 eq
):
my @a = <x y z>;
say "y" eq any(@a); # any(False, True, False)
say so "y" eq any(@a); # True
要匹配正则表达式中数组的任何值,只需在正则表达式中写入数组变量的名称(以 @
开头)。默认情况下,这被解释为 |
交替 ("longest match"),但您也可以将其指定为 ||
交替 ("first match"):
my @a = <foo bar barkeep>;
say "barkeeper" ~~ / @a /; # 「barkeep」
say "barkeeper" ~~ / || @a /; # 「bar」
是否可以使用联结来匹配联结中的任何值?我想匹配数组中的任何值。正确的做法是什么?
lisprog$ perl6
To exit type 'exit' or '^D'
> my @a=<a b c>
[a b c]
> any(@a)
any(a, b, c)
> my $x=any(@a)
any(a, b, c)
> my $y = "a 1"
a 1
> say $y ~~ m/ $x /
False
> say $y ~~ m/ "$x" /
False
> my $x = any(@a).Str
any("a", "b", "c")
> say $y ~~ m/ $x /
False
> say $y ~~ m/ || $x /
False
> say $y ~~ m/ || @a /
「a」
>
谢谢!!
连接并不意味着被插入到正则表达式中。它们旨在用于普通的 Perl 6 表达式,特别是比较运算符(例如 eq
):
my @a = <x y z>;
say "y" eq any(@a); # any(False, True, False)
say so "y" eq any(@a); # True
要匹配正则表达式中数组的任何值,只需在正则表达式中写入数组变量的名称(以 @
开头)。默认情况下,这被解释为 |
交替 ("longest match"),但您也可以将其指定为 ||
交替 ("first match"):
my @a = <foo bar barkeep>;
say "barkeeper" ~~ / @a /; # 「barkeep」
say "barkeeper" ~~ / || @a /; # 「bar」