2017-01-04 18 views
5

접합점을 사용하여 접합점의 어떤 값과도 일치시킬 수 있습니까? 배열의 모든 값을 일치 시키려고합니다. 적절한 방법은 무엇입니까?perl6 일치하는 교차점을 사용합니까?

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」 
> 

감사합니다.

답변

8

접합점은 정규 표현식에 삽입되지 않습니다. 정규식에서 배열의 값과 일치하려면 이름을 쓰기

my @a = <x y z>; 
say "y" eq any(@a); # any(False, True, False) 
say so "y" eq any(@a); # True 

: 그들은 특히 비교 연산자 (예 : eq 등)로, 일반 펄 6 표현에 사용되는 의미있는 정규식에서 배열 변수 (@으로 시작). 기본적으로이는 | 교대 ("가장 긴 일치")로 해석됩니다,하지만 당신은 또한이 || 교대 ("첫 경기")로 지정할 수 있습니다

my @a = <foo bar barkeep>; 
say "barkeeper" ~~/@a /;  # 「barkeep」 
say "barkeeper" ~~/|| @a /; # 「bar」 
+0

가 다시 SMLS 감사를! Perl6은 정말 멋지다. perl6을 사용하면 라켓보다 빨리 작업을 처리 할 수 ​​있습니다. – lisprogtor