我在J中维护一个大的代码库,一些罕见的函数和变量以__(两个下划线)结尾.
通常,__用于引用区域设置中的某些内容.
barObj =: conew 'Bar'
Foo__barObj
Run Code Online (Sandbox Code Playgroud)
但是,我有这个:
Foo__
Run Code Online (Sandbox Code Playgroud)
声明为:
Foo__=: 3 : 0
Run Code Online (Sandbox Code Playgroud)
这是静态函数的另一种语法吗?是否可以访问所有区域设置?
编辑:
从我可以收集到的,它不是本地的.这样声明的变量:
FooVar__ =.
Run Code Online (Sandbox Code Playgroud)
可以被另一个函数引用,尽管=.它看起来像是本地的.任何"进入语言环境"声明的方式总是"对语言环境是全局的"(Foo__Bar =.并且Foo__Bar =:是相同的).
以双下划线结尾是一种在基本语言环境中引用名称的旧技术。以下是Locale 实验室相关部分的详细信息:
括号字符之间没有区域设置名称的方格
_被视为具有名称基础。
abc__是相同的abc_base_
__按原样处理_base_是为了与早期版本兼容,通常您应该使用_base_.