签名智能匹配误解
Signatures smartmatching misunderstanding
在阅读和尝试签名智能匹配时,我 运行 遇到了一些奇怪的事情。
正在执行以下 smartmaching 签名对:
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],但我失败了!
谁能给我解释一下?
Positional
作用的值有多少?或者扮演 Associative
角色的人?
提示在“a 值做...”和“one 做...”。这是一个单的事情。
所以,是的,给定的 Array
或 Hash
有零个、一个、两个或更多 元素 。但它是,本身,一个单一的东西。
$
表示 标量 符号或值。 标量 符号或值的约束是什么?它一次绑定到 a 单个 事物(即使那个事物本身可以包含多个元素)。
在阅读和尝试签名智能匹配时,我 运行 遇到了一些奇怪的事情。
正在执行以下 smartmaching 签名对:
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],但我失败了!
谁能给我解释一下?
Positional
作用的值有多少?或者扮演 Associative
角色的人?
提示在“a 值做...”和“one 做...”。这是一个单的事情。
所以,是的,给定的 Array
或 Hash
有零个、一个、两个或更多 元素 。但它是,本身,一个单一的东西。
$
表示 标量 符号或值。 标量 符号或值的约束是什么?它一次绑定到 a 单个 事物(即使那个事物本身可以包含多个元素)。