Учитывая файл модуля test.pm6
:Являются ли константы в файлах модулей, которые предполагается импортировать автоматически?
constant $AUTHOR='me';
и сценарий test_script.p6
:
use lib '.';
use test;
my $AUTHOR = 'someone';
я получаю следующее предупреждение, когда я компилирую проверить test_script.p6
:
perl6 -c test_script.p6
Potential difficulties:
Redeclaration of symbol '$AUTHOR'
at test_script.p6:5
------> my $AUTHOR⏏ = 'someone';
Syntax OK
Однако, просто изменяя test.pm6
к одному из следующих предупреждений:
my $AUTHOR='me';
или
my constant $AUTHOR='me';
Таким образом, вопрос о том, следует ли константы быть автоматически импортированы или это ошибка?
Используется Rakudo Star 2017.01 Release Candidate 0, установленный на выпуске CentOS Linux 7.3.1611 (Core).
Какая связь между 'our' и' is export'? –
@BradClawsie, вероятно, мало, так как 'is export' code наполняет все символы в импортирующий пакет, тогда как' our' делает вещи в пакетах. Что именно это означает при использовании в магистрали отдельного файла ... Я не уверен на 100%. Я пробовал пинговать двух людей, которые знали бы, но они были AFK :) Ответ также может быть немного неправильным. Когда я сбрасываю GLOBAL, я не вижу константы там, а вместо этого в 'MY'. И модули этого не видят, если я не буду использовать файл с константой в них. –
@BradClawsie, ah, nm, я получил объяснение недостающих частей: он не отображается во всех модулях из-за предварительной компиляции, а также для загрузки лексического модуля (поэтому символ заканчивается в 'MY ::' вместо ' GLOBAL'). –