这里出了什么问题? 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)”或“@Substitute First Occurrence”能帮助 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 的
