こんにちは。メインのJSLスクリプトに「namesdefaulttohere(1)」があり、後でいくつかのダウンストリームJSLスクリプトに「インクルード」します。これらのダウンストリームJSLの一部は、表示専用に暗号化されています。
メインのJSLスクリプトを実行すると、エラーが発生します。
"Name Unresolved: {13} in access or Evaluation of''、" "/ * ### * /"
これはバグですか? (JMP 14.3.0)
暗号化されたスクリプトで終了する必要があるのはなぜですか?このコマンドを使用しているため、他のJSLスクリプトの暗号化を解除したくありません。そうでなければ、おそらくこれを回避する方法はありますか?私は何百ものグローバルを持っているので、それぞれに特定の名前空間を避けたいと思っていました。
ありがとう!DJ
これは単なる推測ですが、遭遇する可能性のあるものはスコープエラーである可能性があります。使用する場合
Names Default To Here( 1 );
JMPは文字通りHereと呼ばれる名前空間を作成し、スコープ外のすべての変数を
Variable Name = 1;
に
Here:Variable Name = 1;
スコープの問題は、適用除外されたスコープ構文を思い付く可能性があります。
以前はNamesDefaultto Here(1)が指定されていなかったJSLでは、次の割り当てステートメントは同等でした
Y=1;
::Y=9;
Show(Y, ::Y);
このJSLの結果は次のとおりです。
Y = 9;
Y = 9;
ただし、デフォルトの名前はHere(1)に指定されています
Names Default To Here( 1 );
Y = 1;
::Y = 9;
Show( Y, ::Y, here:Y );
結果を出します
Y = 1;
Y = 9;
here:Y = 1;
このトピックに関する私のとりとめのない話はすべて、暗号化されたコードがどこかにあると推測します。二重コロン、「::」スコープが指定され、二重コロンが指定されていない状態で参照されています。Names Default to Here(1)を指定すると、二重コロンのない参照は、JSLがこれまでに見たことのない変数名を生成し、例外エラーをスローします。