我在J中维护一个庞大的代码库,一些罕见的函数和变量以__
结尾(两个下划线)。
通常,__
用于引用区域设置中的内容。
barObj =: conew 'Bar'
Foo__barObj
但是,我有这个:
Foo__
声明为:
Foo__=: 3 : 0
这是静态函数的另一种语法吗?是否可以访问所有区域设置?
编辑:
从我可以收集的信息来看,它不是本地的。这样声明的变量:
FooVar__ =.
可以被另一个函数引用,尽管=.
使它看起来像是本地的。任何“进入语言环境”声明始终是“全局到语言环境”的方式相同(Foo__Bar =.
和Foo__Bar =:
是相同的。)
答案 0 :(得分:3)
使用双下划线结束是一种在基本语言环境中引用名称的旧技术。以下是the relevant part of the Locale lab的详细信息:
包围
_
字符之间没有区域设置名称的位置是 被视为具有名称基础。相同
abc__
与abc_base_
将
__
视为_base_
是为了与早期版本兼容,以及 通常,您应该使用_base_
。