我发现在Rascal控制台中,在导入包含全局变量定义的模块后,无法访问这些全局变量。只能访问全局函数名称。例如,在以下代码中,我在控制台中导入Foo
后,我可以调用x()
来获取1
,但取消引用x
会给我一个未绑定的变量错误。为什么呢?
module Foo
int x = 1;
int x() = 1;
答案 0 :(得分:1)
在Rascal中,Globals是默认的private
,以防止您轻易做出这样的肮脏: - )
module Foo
public int x = 1;
int x() = 1;
这有点不一致,因为默认情况下函数是public
但是当你考虑我们最终会从语言中删除全局变量时不会这样: - )