在J中,后缀"__"有什么作用?

MPe*_*ier 5 j

我在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 =:是相同的).

kal*_*dic 3

以双下划线结尾是一种在基本语言环境中引用名称的旧技术。以下是Locale 实验室相关部分的详细信息:

括号字符之间没有区域设置名称的方格_被视为具有名称基础。

abc__是相同的abc_base_

__按原样处理_base_是为了与早期版本兼容,通常您应该使用_base_.