Assinaturas incompreensão inteligente

8

Ao ler e tentar assinatura de correspondência inteligente, encontro algo estranho.

Executando os seguintes pares de assinaturas de 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";
}

Eu tenho os seguintes resultados:

  [ 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 ($, %)

Eu tentei me explicar os casos [4] e [7], mas falhei!

Alguém pode me explicar?

jakar
fonte

Respostas:

9

Quantas coisas é um valor que Positionaldesempenha o papel? Ou alguém que faz o Associativepapel?

A dica está em " um valor que faz ..." e " um que faz ...". É uma coisa única .

Então, sim, um dado Arrayou Hashtem zero, um, dois ou mais elementos . Mas é, por si só , uma coisa única.

$indica um símbolo ou valor escalar . Qual é a restrição em um símbolo ou valor escalar ? É que ele se liga a uma única coisa de cada vez (mesmo que essa coisa possa conter vários elementos).

raiph
fonte
Nessa perspectiva, e os casos [2] e [3]?
jakar 2/01