5

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

通常,__用于引用语言环境中的某些内容。

barObj =: conew 'Bar'
Foo__barObj

但是,我有这个:

Foo__

声明为:

Foo__=: 3 : 0

这是静态函数的另一种语法吗?所有语言环境都可以访问吗?

编辑:

据我所知,它不是本地的。如此声明的变量:

FooVar__ =.

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

4

1 回答 1

3

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

在括号_字符之间没有语言环境名称的位置被视为具有名称基础。

abc__是相同的abc_base_

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

于 2011-08-02T16:27:47.503 回答