JSL 編輯器中的高級語法突出顯示 - 函數是否計算其參數?☑ 很酷的新功能
☑ 可以幫助很多使用者!
☑ 刪除一些感覺像是「bug」的東西
很高興擁有
無人需要它
#myTop10_2024
短的:
讓 JSL 編輯器顯示哪個函數計算其參數,哪個函數不計算!
長的:
是什麼激發了這個願望清單請求?
JSL 中有一個非常強大的行為,但另一方面,卻讓新用戶很難順利上手:
有些函數會計算它們的參數,而有些則不會。
這對於用於表達式處理的函數非常重要。
@joseph_morgan有一個精彩的講座: 使用 JSL 開發高效、健壯的應用程式 (EU 2018 415),講述了這些差異、如何忍受它們以及如何使用它們來開發高效、健壯的應用程式。
……描述當時的狀態:Jmp 14 [2018]:
文檔中不存在此內容。
這是我透過對表達式處理函數的行為進行逆向工程而發現的[]。
相信我,[ ]如果你不考慮這些功能,你永遠不會正確使用它們。
除了此處列出的表達式處理函數之外,這同樣適用於所有函數:
如果你不考慮這些功能,你永遠不會正確使用它們:
了解參數在 not 函數呼叫之前是否被求值非常重要。
這段程式碼有效還是無效?
dt = Expr(current data table());
myscript = Expr(get script());
dt << myscript
不幸的是,對於 JSL 腳本編寫器來說,沒有提示函數的行為方式 - 它是否評估其參數?
也許它只是評估其中一個參數?誰知道?
用戶必須知道!
……或者:對各個函數的行為進行逆向工程。
您希望看到什麼改進?
請實現一些語法突出顯示以指示函數計算的不同方式 - 或不計算其參數。
附加元件:也請指出腳本索引中的差異。

在 JSL 編輯器中,可以透過鍵盤快速鍵啟用/停用突出顯示。
Expr(_x_^2) 顯示出一種困境:
Expr () 的參數不會被求值。但是 ^ 的兩個參數將會被求值。
也許突出顯示會對滑鼠或遊標的位置做出反應 - 只是分支下方的參數在滑鼠/遊標目前所在的位置突出顯示。
為什麼這個想法很重要?
透過新的語法突出顯示,JMP 將引導使用者自動產生正確的程式碼。
用戶不必運行程式碼來獲取錯誤訊息 - 或看到錯誤的結果
……或者對函數進行逆向工程- 就像@JosephMorgan為準備他的論文所做的那樣。
其他願望
自動化和腳本編寫回覆:JSL 編輯器中的高級語法突出顯示 - 該函數是否評估其參數?似乎之間
1) 參數被評估
2) 參數沒有被評估
還有第三種變體:
1b) 參數被評估“一次”
其行為方式如下的函數:
- 頭
- 重新編碼列(第一個參數和 Target Column() 參數的參數
-...?
因此,需要第三種顏色。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col = Name Expr(As Column("name"));
Head(As Column("name"));
Head(col);
dt << Recode Column(AsColumn("name"),{1},Target Column(col));海德評估其論點嗎?
https://community.jmp.com/t5/Discussions/Begin-Data-Update/mp/753037/highlight/true#M93483
回覆:JSL 編輯器中的高級語法突出顯示 - 該函數是否評估其參數?
……描述當時的狀態:Jmp 14 [2018]:
文檔中不存在此內容。
這是我透過對表達式處理函數的行為進行逆向工程而發現的[ ]。
相信我,[ ]如果你不考慮這些功能,你永遠不會正確使用它們。
Jmp18 (2024) 現在狀態:

回覆:JSL 編輯器中的高級語法突出顯示 - 該函數是否評估其參數?嗯,仍然有一些問題可能無法透過高級語法突出顯示來解決...
例如
from the printed "2" one can see that JMP actually evaluates the argument of the Set File List setting - 3 times !?!
... but at the end, it complains about the "print" ?!?
... and without the print it won't do anything, neither complain nor open the file from 文件列表.
folder= "$SAMPLE_DATA/../Import Data/";
file= "Animals.txt";
filelist= Eval List({folder||file});
Multiple File Import(
<<SET folder=""></SET><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/66063i6C7744FFCF743C3B/hogi_0-1720645070503.png" role="button" title="hogi_0-1720645070503.png" alt="hogi_0-1720645070503.png" /></span></SPAN></SPAN></SPAN>
<STRONG>TS-00152969:</STRONG>
<EM>我已經與開發部討論過這個問題。該問題是一個缺陷,我已將其報告給開發人員,以便可以在未來的 JMP 版本中解決。<BR /><BR />非常感謝 -> 已在 JMP19EA5 中修復</EM>
回覆:JSL 編輯器中的高級語法突出顯示 - 該函數是否評估其參數? - 狀態變更為:已確認回覆:JSL 編輯器中的高級語法突出顯示 - 該函數是否評估其參數?謝謝你, @Sarah-Sylvestre
回覆:JSL 編輯器中的高級語法突出顯示 - 函數是否評估其參數?似乎在 JMP19 中已修復:
Jmp 和 JSL 中的小陷阱