2011-07-26 9 views
5

私はJで大きなコードベースを維持していますが、いくつかのまれな関数と変数は__(2つのアンダースコア)で終わります。Jでは、接尾辞 "__"は何をしますか?

通常、ロケールで何かを参照するのに、__が使用されます。

barObj =: conew 'Bar' 
Foo__barObj 

しかし、私はこの持っている:として宣言

Foo__ 

Foo__=: 3 : 0 

は、静的な機能のためにその別の構文ですが?すべてのロケールにアクセスできますか?

編集:

私が集めることができるから、それはローカルではありません。変数は、このように宣言:

FooVar__ =. 

=.は、それがローカルに見える作りにもかかわらず、他の関数で参照することができます。同じように、「ロケールに」宣言は常に「ロケールにグローバル」です(Foo__Bar =.Foo__Bar =:は同じです)。

答えて

3

二重アンダースコアで終わるのは、基本ロケールで名前を参照するための古い技法です。ここでthe relevant part of the Locale labからの詳細は以下のとおりです。

それが名前のベースを持っていたかのようにブラケット_文字の間にはロケール名を持つlocativeが に扱われます。

abc___base_として__を扱うabc_base_

と同じである以前のバージョンとの互換性、および一般的な のためにあなたが_base_を使うべきです。

+0

ありがとうございますkaleidic!私はあなたが答えるのが簡単な別の質問も持っています:http://stackoverflow.com/questions/6905439/chain-verbs-in-j – MPelletier

関連する問題