表脚本 - 完成了吗?从另一个脚本触发表脚本时,如何检查表脚本是否已完成(没有错误)?
不允许添加返回函数:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << run Script( "Bivariate" );
dt << New Script(
"test", JSL Quote(
print(1);
return(1);
),As String( 1 ));
dt << New Script(
"test2", JSL Quote(
New Namespace("myScript");
myScript:finished=0;
print(1);
myScript:finished=1;
),
As String( 1 )
);
If( Not( dt << run Script( "test" ) ),
Stop()
);
dt << run Script( "test2" );
If( Not( myScript:finished ),
Stop()
);
自动化和脚本编写回复:表格脚本 - 完成了吗?dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << deletescripts( "test" );
dt << New Script(
"test", JSL Quote(
if(test<0,
0 // either this is the last value from the if
,
print("ok");
1 // or this is the last value from the if
); // the if() value is either 0 or 1
), // the script's value is the last statement executed value
As String( 1 )
);
test = 37;
Show( test, dt << run Script( "test" ) ); // "ok",1
test = -42;
Show( test, dt << run Script( "test" ) ); // 0
编辑:include() 的工作方式相同。
回复:表格脚本 - 完成了吗?哦,这么简单:)
谢谢@Craige_Hales
回复:表格脚本 - 完成了吗?对于功能来说,这两种变体之间没有区别吗?
testFunc1= Function({},return(1));
testFunc2= Function({},1);
show(testFunc1);
show(testFunc2);回复:表格脚本 - 完成了吗?如果 return(1) 嵌套在 for 循环和 if 语句中,则它有一个主要优点:它返回答案,而无需以其他方式定位为最后一个计算的表达式。 C++ 中 return(1) 的实现比仅以所需表达式结束要慢;您会注意到被调用数百万次的短函数。 所以在你的例子中我倾向于写
testFunc2= Function({},
/*return*/ 1
);
与评论。 或者,如果清晰度更重要,请使用 return(1)。 break() 和 continue() 语句的工作原理大致相同。 为了清晰起见使用它们,或者以不经常执行它们的方式使用它们是完美的。
回复:表格脚本 - 完成了吗?/*return*/ 注释是个好主意。
我已经删除了我的“1”之一 - 因为它看起来很不必要;)
几天后,由于没有与删除的“1”的直接连接,很难找出问题所在......