您好,我在主 JSL 腳本中有一個“名稱預設為此處(1)”,該腳本稍後會在某些下游 JSL 腳本上“包含”。其中一些下游 JSL 已加密,僅供查看。
當我執行主 JSL 腳本時,出現錯誤:
“名稱未解決: {13} 訪問或評估 ' ',' “/*###*/”
這是一個錯誤嗎? (JMP 14.3.0)
為什麼它應該在加密腳本上退出?我當然不想因為使用此命令而解密其他 JSL 腳本。否則,也許有辦法解決這個問題嗎?我有 100 個全域變量,因此希望避免為每個全域變數使用特定的名稱空間。
謝謝! 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;
但是,指定名稱預設為 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 以前未曾見過的變數名稱,並將引發例外錯誤。