Firmas malentendidos malentendidos


8

Mientras leo e intento el emparejamiento inteligente de firmas, me encuentro con algo extraño.

Ejecutando los siguientes pares de firmas 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";
}

Tengo los siguientes 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 ($, %)

He intentado explicarme los casos [4] y [7] pero he fallado.

¿Alguien me lo puede explicar?

Respuestas:


9

¿Cuántas cosas es un valor que hace el Positionalpapel? O uno que hace el Associativepapel?

La sugerencia está en " un valor que hace ..." y " uno que hace ...". Es una sola cosa.

Entonces, sí, un dado Arrayo Hashtiene cero, uno, dos o más elementos . Pero es, como sí mismo , una sola cosa.

$indica un símbolo o valor escalar . ¿Cuál es la restricción en un símbolo o valor escalar ? Es que se une a una sola cosa a la vez (incluso si esa cosa en sí misma puede contener múltiples elementos).


En esa perspectiva, ¿qué pasa con los casos [2] y [3]?
jakar
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.