這是怎麼回事? Formula() 中的表達式問題注意 - JMP 會崩潰!
Names Default To Here( 1 );
f = Function( {},
/* .... */
ID = Associative Array( {{Name Expr(), 1}, {Expr(), 2}, {Function(), 3}}, 0 );<BR />/* .... */
);
f();
從清單中刪除function()可以修復該錯誤。
將關聯數組從外部函數中取出可以修復該錯誤。
[編輯] 為什麼這會有所幫助的動機:
作為表達式部分的查找表 - 透過Head()和Type() 標識:
myID = ID[Expr(function())]; // expected: 3
code = Expr(g = function ({x},1));
Head(Arg(code,2)); // function()
myID = ID[Head(Arg(code,2))]; // expected: 3自動化和腳本編寫回覆:這裡出了什麼問題?它確實讓 JMP 震驚不已。您剛剛發明了一種退出 JMP 會話的新快速方法...
這需要轉至 JMP 支援!這樣的事情不應該發生。
回覆:這裡出了什麼問題?我還有另外一個:
注意 - JMP 會崩潰!
x = Expr(Function());
Show(name Expr(x) == Expr(Function()));
Print("not dead");
f = function({arg},
name Expr(arg) == Expr(Function()))在函數外部,x 與Function ()的比較是可以的。
在函數內部,JMP 在看到命令時已經崩潰 - 無需呼叫f 。
回覆:這裡出了什麼問題?來自 JMP 支援(TS-00166834):
存在一個已知問題:在另一個函數中使用格式錯誤的函數時,JMP 會崩潰。
因此,根本原因可以縮小到
注意——JMP將會崩潰! ! !
f = Function( {}, Expr(Function()));
……看起來很無辜。
函數定義格式錯誤- 是的。但根據
@joseph_morgan / 使用 JSL 開發高效能、強大的應用程式 (EU 2018 415) 。
因此,令人驚訝的是 JMP 無法忍受它。
函數內的函數讓我想起了JMP Expr() 的怪異之處,有人可以解釋嗎? / @ErraticAttack 。
因此,除了使用者之外,當表達式出現在不同層級時,即使是 JMP 也會出現問題。那麼,也許插入:Flatten(0|1)或@SubstituteFirstOccurrence甚至可以幫助JMP?

JMP 支援的建議:
您還可以採取其他一些措施來防止崩潰。一種是將花括號({})作為內部函數的必要參數。還有一種就是把內部函數中Function這個字後面的括號去掉。
不幸的是,上述應用案例沒有任何幫助。
回覆:這裡出了什麼問題?解決方法:
f = Function( {},
/* .... */
ID = Associative Array( {{"Name Expr()", 1}, {"Expr()", 2}, {"Function()", 3}}, 0 );
/* .... */
);
f();
code = Expr(g = function ({x},1));
myID=ID[Char(Head(Arg(code,2)))]
但有點「痛」…

回覆:這裡出了什麼問題?我比較喜歡這個:
f = Function( {},
/* .... */
Eval (Eval Expr(ID = Associative Array( {{Name Expr(), 1}, {Expr(Parse("Expr()")), 2}, {Expr(Parse("Function()")), 3}}, 0 )));
/* .... */
);
f;
code = Expr(g = function ({x},1));
myID=ID[Head(Arg(code,2))];
它不起作用,在eval expr之後它或多或少會與之前相同...
.... 哇!
注意: Expr()無法在Eval Expr中倖存 - 因此必須受到保護。
回覆:這裡出了什麼問題?-
回覆:這裡出了什麼問題? Formula() 中的表達式問題實際上我幾天前剛提交了這個錯誤報告!我發現函數內使用 Expr(Function()) 會導致崩潰。我在以下情況下使用它
Substitute(my_expr, Expr(Function()), Expr(Method()))
但能夠透過使用 Expr(Function) 來代替。
對於您的問題,如果您不想解析字串,另一種可能的解決方案是執行類似的操作
y = Function({head_key},
ID = Associative Array( EvalList({{Name Expr(), 1}, {Expr(), 2}, EvalList({Head(Expr(Function({},1))), 3})}), 0 );
ID[NameExpr(head_key)]
);
Show(y(Expr(Function())));儘管仍然不完全是“漂亮”。
回覆:這裡出了什麼問題? Formula() 中的表達式問題Head(Expr(Function()))
好的!
比我的Eval( ... Parse( ... 尤其是在引用 Joseph 的
