為什麼是 ::labelslist?Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
labelsList = {"F" = "A", "M" = "B"}; //here namespace
::labelsList = {"F" = "①", "M" = "②"}; // global variable
f = function ({},
{default local},
labelsList = {"F" = "X", "M" = "Y"} ; // local variable
dt:sex << Set Property( "Value Labels", labelsList ) // which variable will JMP pick?
);
f
JMP 19.1: ①,②
JMP 18.2.2 和 JMP 20EA: X、Y
變通方法:
- 使用dt:sex <
- 使用Eval (Eval Expr( ... Expr (labelslist) ))
自動化和腳本編寫
回覆:為什麼是 ::labelslist?更難理解的是最初的錯誤訊息:

delete symbols (::labelsList);
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
f = function ({},
{default local},
labelsList = {"F" = "X", "M" = "Y"} ;
dt:sex << Set Property( "Value Labels", labelsList )
);
f
回覆:為什麼是 ::labelslist?「未知」表示 JMP 捕獲了一個意外錯誤,並且沒有更好的解釋。請報告此錯誤並說明您認為應該如何解決;開發人員將有機會修復此問題,要么使其以合理的方式運行,要么改進錯誤訊息。
回覆:為什麼是 ::labelslist?JMP19 可能對資料表進行了評估,所以才使用了全域值。你可能會質疑是否應該進行這種評估。
此列儲存列屬性及其提供的值,而不對提供的參數進行評估或驗證。若要使用 JSL 程式碼新增包含變數的列屬性,腳本必須將所有變數轉換為其實際值。 腳本指南 > 資料表 > 處理列 > 設定或取得列屬性.
如果您使用 JMP19 將變數以 {} 包裹起來,也可以使 JMP 崩潰(JMP18 不會崩潰,但您會收到嘗試賦值錯誤)。