토큰 이름을 직접 사용하여 토큰 서명을 쉽게 사용할 수 있습니다.
my token t ( $x ) { $x };
'axb' ~~ / 'a' <t: 'x'> 'b' /; # match
'axb' ~~ / 'a' <t( 'x' )> 'b' /; # match
그러나 토큰이 변수에 저장되어있을 때 이것을 수행하는 방법을 찾지 못했습니다.
my $t = token ( $x ) { $x };
'axb' ~~ / 'a' <$t: 'x'> 'b' /;
'axb' ~~ / 'a' <$t( 'x' )> 'b' /;
둘 다 :
===SORRY!=== Error while compiling ...
Unable to parse expression in metachar:sym<assert>; couldn't find final '>'
그 마법의 구문은 무엇입니까?
BTW : Raku 테스트 스위트를 찾아 보았으며에 해당 사례가 포함되어 있지 않습니다 roast/S05-grammar/signatures.t
.
답변
어느 한 쪽:
-
jnthn의 답변에서 솔루션을 사용하여 Raku가
$
sigild 토큰 변수를로 사용하고 싶다고 명시 적으로 알도록하십시오Callable
. -
변수를
Callable
처음에 명시 적으로 선언하고 해당하는 호출을 변경하십시오.
my &t = token ( $x ) { $x };
say 'axb' ~~ / 'a' <&t: 'x'> 'b' /; # 「axb」
say 'axb' ~~ / 'a' <&t( 'x' )> 'b' /; # 「axb」
답변
를 놓고 &
변수 전에 :
my $t = token ( $x ) { $x };
say 'axb' ~~ / 'a' <&$t: 'x'> 'b' /;
say 'axb' ~~ / 'a' <&$t( 'x' )> 'b' /;
파서는을 &
찾은 다음 Raku 변수 파싱 규칙에 위임합니다.