Perl6 REPL поведение при печати - PullRequest
       12

Perl6 REPL поведение при печати

0 голосов
/ 27 февраля 2019

Когда я выполняю следующий оператор в Perl6 REPL:

my $var = 1, 2, 3;

он печатает:

(1 2 3)

Мне кажется это любопытным, потому что $var фактически назначается одинцелое число (т. е. $var.WHAT возвращает (Int)), а не List из Int с.

Я так понимаю, что причиной присвоения Int является более высокий приоритет оператора присваивания элемента (=) относительно оператора запятой (,), который оставляет ,2,3в контексте раковины.Но почему в REPL отображается List из Int с?А что вообще отображает REPL после выполнения оператора?

1 Ответ

0 голосов
/ 27 февраля 2019

REPL в основном делает say (my $var = 1,2,3).Поскольку результат этого выражения равен a List, он будет отображаться как (1 2 3).Внутри этого выражения только первому элементу этого списка присваивается $a, следовательно, это Int.

Так почему же он не предупредил об этом?Это, как вы указали:

$ perl6 -e 'my $a = 1,2,3'
WARNINGS for -e:
Useless use of constant integer 2 in sink context (lines 1, 1)
Useless use of constant integer 3 in sink context (lines 1, 1)

, тогда как это не так:

$ perl6 -e 'say (my $a = 1,2,3)'
(1 2 3)

Причина проста: из-за say, ,2,3 небольше в контексте стока, так как они используются say.

...