1
我发现在Rascal控制台中,导入包含全局变量定义的模块后,这些全局变量无法访问。只有全局函数名称是可访问的。例如,在以下代码中,在控制台中导入Foo
后,我可以拨打x()
获取1
,但取消引用x
会给我一个未绑定的变量错误。为什么?导入模块后无法访问模块中的全局变量
module Foo
int x = 1;
int x() = 1;
我发现在Rascal控制台中,导入包含全局变量定义的模块后,这些全局变量无法访问。只有全局函数名称是可访问的。例如,在以下代码中,在控制台中导入Foo
后,我可以拨打x()
获取1
,但取消引用x
会给我一个未绑定的变量错误。为什么?导入模块后无法访问模块中的全局变量
module Foo
int x = 1;
int x() = 1;
全局为默认private
的捣蛋鬼,以防止你不容易做这种龌龊:-)
module Foo
public int x = 1;
int x() = 1;
这是有点不一致,因为该函数是public
默认情况下,但不是当你考虑我们最终将从语言中删除全局变量:-)
完全删除全局变量听起来很合理。但是有可能定义全局常量将会很好。 – day
同意,globals常量是无害的和有用的 – jurgenv