Sollen Konstanten in Moduldateien automatisch importiert werden?

8

Gegeben die Moduldatei test.pm6 :

%Vor%

Und das Skript test_script.p6 :

%Vor%

Beim Kompilieren von check test_script.p6 :

bekomme ich folgende Warnung %Vor%

Wenn Sie jedoch test.pm6 auf einen der folgenden Werte ändern, wird diese Warnung nicht mehr angezeigt:

%Vor%

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).

    
Christopher Bottoms 25.01.2017, 14:16
quelle

1 Antwort

11

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)

    
Zoffix Znet 25.01.2017, 14:37
quelle

Tags und Links