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