署名のスマートマッチングを読んで試してみると、奇妙なことに遭遇しました。
次のスマートマシンシグネチャペアを実行します。
my @sigs = :($a, $b), :($a, @b), :($a, %b);
my @signatures_to_check = :($, $), :($, @), :($, %);
my $c = 0;
for @sigs -> $sig {
for @signatures_to_check -> $s {
$c++;
if $sig ~~ $s {
say " [ $c ] " ~ $sig.gist ~ ' match ' ~ $s.gist;
next;
}
say " [ $c ] " ~ $sig.gist ~ ' do NOT match ' ~ $s.gist;
}
say "\n" ~ '#' x 40 ~ "\n";
}
次の結果が得られました。
[ 1 ] ($a, $b) match ($, $)
[ 2 ] ($a, $b) do NOT match ($, @)
[ 3 ] ($a, $b) do NOT match ($, %)
########################################
[ 4 ] ($a, @b) match ($, $)
[ 5 ] ($a, @b) match ($, @)
[ 6 ] ($a, @b) do NOT match ($, %)
########################################
[ 7 ] ($a, %b) match ($, $)
[ 8 ] ($a, %b) do NOT match ($, @)
[ 9 ] ($a, %b) match ($, %)
[4]と[7]のケースを説明してみましたが、失敗しました。
誰かがそれを私に説明できますか?