Gegeben die Moduldatei test.pm6
:
Und das Skript test_script.p6
:
Beim Kompilieren von check test_script.p6
:
Wenn Sie jedoch test.pm6
auf einen der folgenden Werte ändern, wird diese Warnung nicht mehr angezeigt:
oder
%Vor%Also, die Frage ist, ob Konstanten automatisch importiert werden sollen oder ist das ein Fehler?
Dies wird unter Rakudo Star 2017.01 Release Candidate 0 auf CentOS Linux Release 7.3 installiert .1611 (Kern).
Dies ist kein Fehler. Konstanten sind our
standardmäßig und Ihre Konstante in test.pm6
ist immer noch in der Hauptlinie und wird daher in den GLOBAL
Namespace platziert und da es ein our
ist, ist es in Ihrem Hauptskript sichtbar.
Eine Möglichkeit, dies zu vermeiden, ist, was Sie gefunden haben: Verwenden Sie my
für Konstanten / Klassen (wie sie standardmäßig our
verwenden). Oder umgekehrt, um ein our
für Unterprogramme / Variablen zu verwenden, die sichtbar gemacht werden sollen (als Voreinstellung für my
).
Eine andere Möglichkeit besteht darin, unit module BlahBlah;
am Anfang Ihrer Moduldatei zu verwenden. Diese Symbole werden dann in BlahBlah
namespace und nicht in GLOBAL
angezeigt und sind daher im Hauptskript nicht sichtbar direkt (auf our
-Symbole kann immer noch als BlahBlah::whatever
zugegriffen werden)
PS: Diejenigen, die 2016 auf Rakudos sind, werden dieses Verhalten nicht beobachten, weil lexikalischer Modulladefehler , die nur in 2017.01 Compiler Release behoben wurde (und wurde einige Tage nach 2016.12 Compiler-Release zu fusionieren)
Tags und Links perl6