JSL 编辑器中的高级语法突出显示 - 函数是否评估其参数?☑ 很酷的新功能
☑ 可以帮助很多用户!
☑ 删除一些感觉像“错误”的东西
☐ 很高兴有
☐ 没人需要它
#myTop10_2024
短的:
让 JSL 编辑器显示哪个函数评估其参数以及哪个函数不评估其参数!
长的:
是什么启发了这个愿望清单请求?
JSL 中有一个非常强大的行为,但另一方面,它却让新用户很难顺利开始使用:
有些函数会评估其参数,有些则不会。
这对于用于表达式处理的函数非常重要。
@joseph_morgan有一场精彩的讲座: 使用 JSL 开发高效、健壮的应用程序(EU 2018 415),讲述了它们之间的差异、如何使用它们以及如何使用它们来开发高效、健壮的应用程序。
...描述当时的状态:Jmp 14 [2018]:
文档中没有此内容。
这是我通过对表达式处理函数的行为进行逆向工程而发现的。
相信我,[ ] 如果您不考虑这些功能,您将永远无法正确理解它们。
除了这里列出的表达式处理函数外,所有函数都同样适用:
如果你不考虑这些功能,你将永远无法正确理解它们:
知道在函数调用之前参数是否被评估是非常重要的。
这个代码有效还是无效?!?
dt = Expr(current data table());
myscript = Expr(get script());
dt << myscript
不幸的是,对于 JSL 脚本编写者来说,没有任何提示表明该函数如何表现 - 它是否评估其参数?
也许它只是评估其中一个参数?谁知道呢?
用户必须要知道!
...或者:对相应功能的行为进行逆向工程。
您希望看到什么改进?
请实现一些语法突出显示来指示函数评估其参数的不同方式 - 或者不评估其参数。
附加组件:请同时指出脚本索引中的差异。

在 JSL 编辑器中,可以通过键盘快捷键激活/停用突出显示。
Expr(_x_^2) 显示出一种困境:
Expr () 的参数不会被求值。但是 ^ 的两个参数会被求值。
也许突出显示会对鼠标或光标的位置做出反应 - 仅突出显示鼠标/光标当前所在的分支下方的参数。
为什么这个想法很重要?
通过新的语法高亮功能,JMP 将自动指导用户生成正确的代码。
用户无需运行代码即可收到错误消息或看到错误的结果
...或者对该函数进行逆向工程——就像@JosephMorgan准备论文时所做的那样。
其他愿望
自动化和脚本回复:JSL 编辑器中的高级语法高亮显示 - 该函数是否评估其参数?似乎
1)参数被评估
2)论点没有得到评估
还有第三种变体:
1b) 该参数被求值“一次”
具有如下行为的函数:
- 头
- 重新编码列(第一个参数和目标列()参数的参数
-...?
因此,需要第三种颜色。
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));Head 是否评价了它的论点?
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 中的小陷阱