2013-11-21 193 views
1

我发现在Rascal控制台中,导入包含全局变量定义的模块后,这些全局变量无法访问。只有全局函数名称是可访问的。例如,在以下代码中,在控制台中导入Foo后,我可以拨打x()获取1,但取消引用x会给我一个未绑定的变量错误。为什么?导入模块后无法访问模块中的全局变量

module Foo 

int x = 1; 

int x() = 1; 

回答

1

全局为默认private的捣蛋鬼,以防止你不容易做这种龌龊:-)

module Foo 

public int x = 1; 

int x() = 1; 

这是有点不一致,因为该函数是public默认情况下,但不是当你考虑我们最终将从语言中删除全局变量:-)

+0

完全删除全局变量听起来很合理。但是有可能定义全局常量将会很好。 – day

+0

同意,globals常量是无害的和有用的 – jurgenv