署名のスマートマッチングの誤解


8

署名のスマートマッチングを読んで試してみると、奇妙なことに遭遇しました。

次のスマートマシンシグネチャペアを実行します。

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]のケースを説明してみましたが、失敗しました。

誰かがそれを私に説明できますか?

回答:


9

そのPositional役割を果たす価値はいくつありますか?またはAssociative役割を果たしているもの?

ヒントは、「である」...ない値「と1 ...ありません」。それは一つのことです。

だから、はい、与えられたArrayか、Hashゼロ、1つ、2つまたはそれ以上持っている要素を。しかし、それ自体は単一のことです。

$スカラー記号または値を示します。スカラーシンボルまたは値の制約は何ですか?それは一度に1つのものにバインドするという ことです(そのもの自体に複数の要素を含めることができる場合でも)。


その観点から、ケース[2]と[3]はどうですか?
ジャカル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.