В J, что делает суффикс "__"? - PullRequest
5 голосов
/ 26 июля 2011

Я поддерживаю большую базу кода в J, и несколько редких функций и переменных заканчиваются на __ (два подчеркивания).

Обычно __ используется для ссылки на что-то в локали.

barObj =: conew 'Bar'
Foo__barObj

Тем не менее, у меня есть это:

Foo__

Объявлен как:

Foo__=: 3 : 0

Это другой синтаксис для статической функции? Это доступно для всех языков?

EDIT:

Из того, что я могу собрать, это не локально. Переменная объявлена ​​так:

FooVar__ =.
На

может ссылаться другая функция, несмотря на то, что =. делает его локальным. Точно так же любые объявления «в локаль» всегда «глобальны для локали» (Foo__Bar =. и Foo__Bar =: одинаковы).

1 Ответ

3 голосов
/ 02 августа 2011

Окончание с двойным подчеркиванием - это старая техника для ссылки на имя в базовой локали.Вот сведения из соответствующей части языковой лаборатории :

Локатив без имени локали между скобками _ обрабатывается так, как если бы он имел базу имен.

abc__ совпадает с abc_base_

Обработка __ как _base_ предназначена для совместимости с более ранними версиями, и, как правило, вы должны использовать _base_.

...