我知道在 JSL 中我可以更改各個列上的 Suppress Eval 標誌,以防止評估該列的公式。這對於需要一段時間才能計算的複雜公式很有用。我可以評估一次並抑制它,但保持公式完整,以便我可以在需要時返回並再次評估。
在某些情況下,當我執行迭代多個列的操作時,我想知道 Suppress Eval 標誌的當前狀態,而不實際更改它。我還沒有找到任何方法來提取這些資訊。我可以將該值設為 1 或 0,但無法切換它,也無法取得當前值。這可能嗎?
Names Default To Here(1);
dt = Current Data Table();
col = Column(dt, "myColumn");
col << Suppress Eval(1); //suppresses formula eval
col << Suppress Eval(0); //un-suppresses formula eval
suppress_state = col << Suppress Eval; //does not work as expected. sets suppress eval to 1.
Show(suppress_state); //prints "suppress_state = Scriptable[]" in the log. current state not returned.
我還注意到,如果 Supress Eval 已設定為 1 並且執行“col << Supress Eval”行,則會顯示以下警告:
帶有空布林參數的訊息啟用了已啟用的選項。該選項保持啟用狀態。在 JMP 的早期版本中,這會停用該選項。
因此,在 JMP 的早期版本中,可以切換此選項,但此功能已被刪除。
我還查看了 Show Properties(col) 的輸出,發現只有一個對 Supress Eval 的引用:
抑制 Eval [布林值] [僅限腳本]
那麼這意味著它是一個接受布林參數、不傳回值並且只能從腳本存取的函數?有什麼辦法可以取得到值嗎?
我不知道獲取它的直接方法,但是這段愚蠢的代碼可以解決它;
suppresseval = contains(char(:<YOURCOLUMNNAME> <<GET script=""></GET></YOURCOLUMNNAME>