JSL:if - else -> 找到逗号?你好,
我经常面临这样的问题:代码无法工作,因为十分之一的分号是逗号,或者属于 if 块的一个逗号实际上丢失了。
是否有一个简单的技巧可以使 if-else 子句中的块更加明显?
高级统计建模消费者和市场研究实验设计可靠性分析回复:JSL:if - else -> 找到逗号吗?很酷,很方便:)
回复:JSL:if - else -> 找到逗号吗?将 If() 语句粘贴到公式编辑器中有助于快速发现它。

回复:JSL:if - else -> 找到逗号吗?哦不-再一次,在对我的代码进行一些复制和粘贴并重新排列之后,它的行为就好像 if 语句中的某处有错误的逗号一样
- 我希望有一个突出显示功能已在 Jmp17 中实现:)
嗯,还没……
所以我回到帖子中的建议并寻找一些帮助。
在阅读建议时第一次我想:听起来不错,当我遇到下一个问题时,他们中的很多人都会帮助我。
现在,当搜索错误放置的逗号时,实际上是@tx尼尔森的建议这帮助我找到了它:
点击重新格式化脚本并检查缩进与预期不符的地方。
非常简单——正如预期的那样。
另一方面,在一次又一次搜索错误的逗号时,其他建议读起来有点像
”不应该有的地方有一个逗号?你必须找到它并纠正它”。
结合这两种方法来编写代码
1)以可读的方式
2)使得重新格式化脚本不改变格式。
可以放一个空行在逗号前面如果声明。 这将防止重新格式化脚本将逗号移动到上一行的末尾。不幸的是,它还会将逗号后面的代码移到下一行,只将逗号留在那里 - 这使得代码有点“宽网格”并且难以阅读。 嗯。
Names Default To Here( 1 );
dt = Current Data Table();
If(
Is Empty( dt ),
Print( "no table found" );
,
N Rows( dt ) == 0,
Print( "table has no data" );
, // else
Print( "ok" )
);
自己尝试一下:错误的逗号在哪里
代码由提供不稳定的攻击,但在应该有分号的地方加了逗号:
Names Default to Here( 1 );
dt = Current Data Table();
Try(
If( Contains( dt << Get Column Names, As Name( "height" ) ),
mean = Col Mean( dt:height );
max = Col Max( dt:height );
min = Col Min( dt:height );
std dev = Col Std Dev( dt:height ),
Write( "\!NSome stats on :HEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "weight" ) ),
mean = Col Mean( dt:weight );
max = Col Max( dt:weight );
min = Col Min( dt:weight );
std dev = Col Std Dev( dt:weight );
Write( "\!NSome stats on :WEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "age" ) ),
mean = Col Mean( dt:age );
max = Col Max( dt:age );
min = Col Min( dt:age );
std dev = Col Std Dev( dt:age );
Write( "\!NSome stats on :AGE:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Print( "Cannot find columns 'height', 'weight', or 'age'" )
)
,
Print( "mistakes were made" )
)
查看更多... 回复:JSL:if - else -> 找到逗号吗?你好@hogi ,
这不是您具体问题的准确答案。 但我认为 Visual Studio 的 jsl 扩展总体上提供了更好的脚本体验。
https://marketplace.visualstudio.com/items?itemName=VinceFaller.jmp-scripting
回复:JSL:if - else -> 找到逗号吗?我同意@jthi ,我避免使用重新格式化。作为一名程序员,我的工作就是制定一个清晰的风格指南,并在编写代码时强制执行它。
注释如
, // else
当代码行数较多时,可以帮助给出直观的指导。
我也认为将逗号与主要 if 语句对齐是更好的风格。
回复:JSL:if - else -> 找到逗号吗?据我所知。 目前,您可以从首选项脚本编辑器页面找到一些更改。
另外,编写可定制的自动格式化程序并不是最简单的任务(至少我这么认为),我什至不确定这是否是一个好主意。 我认为自以为是的自动格式化程序比完全可定制的自动格式化程序更常见,而且很可能更好。 但 JSL 没有可供遵循的风格指南,因此没有常见的自动格式化程序所基于的意见(JSL 是非常小的语言)。
这是关于 Python 黑色自动格式化程序的视频Łukasz Langa - Life Is Better Paint Black,或者:如何停止担忧并拥抱自动格式化 (youtube.com)
回复:JSL:if - else -> 找到逗号吗?
@jthi写道:
正确配置[重新格式化]...
有没有办法配置重新格式化?
回复:JSL:if - else -> 找到逗号吗?我使用有点类似的风格@ErraticAttack但我将条件分隔到与 相同的行,甚至可能评论 else 并捕获是否块很长
Names Default To Here(1);
dt = Current Data Table();
Try(
If(Is Empty(dt),
print("no table found");
, N Rows(dt) == 0,
print("table has no data");
, N Rows(dt) <= 10,
print("not enough data");
, // else
print("ok")
);
, // catch
show(exception_msg);
);
我尝试以避免在我的脚本变得足够长/复杂后使用 jsl 重新格式化,因为我通常必须在使用后进行清理。 即使重新格式化像我需要的那样灵活,我想我也不会费心正确配置它......
回复:JSL:if - else -> 找到逗号吗?我的解决方案是将重要的逗号放在围栏的水平上。下面是一个示例 - 请注意,分隔 IF 块的逗号位于 IF 语句级别,对于 TRY 也是如此
Names Default to Here( 1 );
dt = Current Data Table();
Try(
If( Contains( dt << Get Column Names, As Name( "height" ) ),
mean = Col Mean( dt:height );
max = Col Max( dt:height );
min = Col Min( dt:height );
std dev = Col Std Dev( dt:height );
Write( "\!NSome stats on :HEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "weight" ) ),
mean = Col Mean( dt:weight );
max = Col Max( dt:weight );
min = Col Min( dt:weight );
std dev = Col Std Dev( dt:weight );
Write( "\!NSome stats on :WEIGHT:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Contains( dt << Get Column Names, As Name( "age" ) ),
mean = Col Mean( dt:age );
max = Col Max( dt:age );
min = Col Min( dt:age );
std dev = Col Std Dev( dt:age );
Write( "\!NSome stats on :AGE:",
"\!NMin: ", min,
"\!NMax: ", max,
"\!NMean: ", mean,
"\!NStd Dev: ", std dev
)
,
Print( "Cannot find columns 'height', 'weight', or 'age'" )
)
,
Print( "mistakes were made" )
)
回复:JSL:if - else -> 找到逗号吗?JMP 应该聘请您担任产品质量职务! 爱它!
回复:JSL:if - else -> 找到逗号吗?感谢您的支持 :)
这是愿望:
JSL 编辑器中优化的语法突出显示
回复:JSL:if - else -> 找到逗号吗?我喜欢您对此的想法,以及您对 JMP 和 JSL 改进的其他想法......我建议您将这些添加到 JMP 愿望清单中。这会将您的意见传达给真正能够做出改变的个人。
回复:JSL:if - else -> 找到逗号吗?嗯,我只是想:
如果Jmp中有这个神奇的GraphBuilder可以帮助你在5秒内生成各种图表,
还应该能够在 5 秒内分析复杂的 If & Match 结构,以发现结构中的任何错误。
通过“重新格式化脚本”的自动缩进非常棒 - 它显示了代码结构的完整层次结构 - 一目了然。
但这也是缺点:完全的等级制度
这就是为什么人眼需要一些时间来分析信息,甚至需要大脑的一些支持才能做到这一点。
有一些方法可以以一种“眼睛”需要大脑较少支持的格式对信息进行编码——正如人们可以从中学到的@XanGregg :
全体会议:所有图表都是错误的,但有些是有用的 - Xan Gregg
沿着这个思路思考...
A 单击括号以突出显示 If 语句非常有用
- 但如果所包含文本的阴影不均匀(如左图所示),那就太好了 - 但是以一种有意义的方式(如右图所示)。
Jmp 拥有所需的所有信息(它使用它来调整缩进) - 为什么不使用它来着色?
很明显,右图中没有任何其他信息,无法从左侧的缩进中推断出来。
缩进甚至可以显示更多内容:复杂代码结构的完整层次结构一目了然。 是的。
但正确的图像看起来很有说服力,对吧?
编辑:链接到愿望

回复:JSL:if - else -> 找到逗号吗?我喜欢这个人在这里必须说的话。
JMP 不关心这种格式,但如果您没有纪律以反映显示框层次结构的方式编写代码,您很快就会陷入混乱。
此声明并不专门适用于展示盒,而是普遍适用于 JSL。 我仍在自我学习,但将代码直观地构造为逻辑部分是一项很好的时间投入,即使它有时会变成取证练习(巧合的是,这是大多数学习往往发生的地方)。
回复:JSL:if - else -> 找到逗号吗?右键单击 JSL 窗口,然后选择“重新格式化脚本”。
这会将块对齐到标准凹口处。
您还可以单击任何函数或矩阵边界括号 {} [],它将选择匹配的括号
回复:JSL:if - else-> 找到逗号?一个很好的例子,可能出现什么问题:
x= if(<BR />// 1st test<BR /><BR /> 1==3,
1
, // 2nd test
1==5,
2,
, // others
3
)
执行代码后,x=...
回复:JSL:if - else-> 找到逗号?伙计们,这几乎是完美的:

https://community.jmp.com/t5/Discussions/If-statement-comma/mp/824212/highlight/true#M100363
很好的解决方法
... 直到:folded_hands: JSL 编辑器中的优化语法高亮可用。