如何避免模块之间的名称冲突?从文档中可以看出,目前Rascal中的模块之间没有原则名称管理。导入模块时,导入模块中声明为public
的所有名称都将进入范围。有合格的进口方式吗?或者会有吗?
答案 0 :(得分:3)
再次提出好问题:-)简短的回答是,您在两次导入相同名称的模块中的使用地点限定名称。
答案很长很多:
extend
机制(与import
相对)将支持将来在扩展时重命名。import
两个使用相同名称的模块存在歧义,该名称将在当前模块的使用站点进行限定。类型检查器将建议适当的东西(当它被释放时)。
int a = f;
(想象f是从模块A和模块B导入的),你应该写:int a = A::f
或int a = B::f
来解决模糊性。< / LI>
data A = a();
与data A = b()
合并,语法syntax Exp = Exp "+" Exp;
的相同内容与syntax Exp = Exp "*" Exp;
合并,并且对于函数:int f(int i) = 1;
已合并与int f(real r) = 1;
。A::f(1)
以防止使用合并版本。int f(int i) = 1;
来自一个模块int f(value x) = 2;
来自另一模块。