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

时间:2011-07-26 16:16:21

标签: j

我在J中维护一个庞大的代码库,一些罕见的函数和变量以__结尾(两个下划线)。

通常,__用于引用区域设置中的内容。

barObj =: conew 'Bar'
Foo__barObj

但是,我有这个:

Foo__

声明为:

Foo__=: 3 : 0

这是静态函数的另一种语法吗?是否可以访问所有区域设置?

编辑:

从我可以收集的信息来看,它不是本地的。这样声明的变量:

FooVar__ =.

可以被另一个函数引用,尽管=.使它看起来像是本地的。任何“进入语言环境”声明始终是“全局到语言环境”的方式相同(Foo__Bar =.Foo__Bar =:是相同的。)

1 个答案:

答案 0 :(得分:3)

使用双下划线结束是一种在基本语言环境中引用名称的旧技术。以下是the relevant part of the Locale lab的详细信息:

  

包围_字符之间没有区域设置名称的位置是   被视为具有名称基础。

     

abc__abc_base_

相同      

__视为_base_是为了与早期版本兼容,以及   通常,您应该使用_base_