优雅地退出加载项我正在编写一个插件来对当前数据表()进行操作。 我希望加载项在以下情况下正常退出而不执行任何操作:
(a) 没有当前数据表()
或者
(b) 当前数据表的列数<2。
我似乎无法让这件事发生。 我安装了该加载项并查看了生成的 .jmpcust 文件。 在脚本的最顶部,注释显示“此处声明的变量和函数的范围仅限于应用程序命名空间”,我注意到以下代码:
dt = Current Data Table();
If(Is Empty(dt),
Quit Application()
);
Quit Application = Function({},
Current Window() << Close Window;
Throw()
)我*认为*是由应用程序生成器(而不是我)插入的。
这似乎适合完成 (a),但我的加载项在没有当前数据表 () 的情况下提前收费并打开其对话框窗口。
有人可以帮我吗?
消费者和市场研究回复:优雅地退出加载项您的意思是您希望脚本停止而不向用户提供任何反馈吗? 如果是这样,请将 throw("info text") 替换为 stop(),脚本将在那里终止。 我想它在应用程序脚本中的工作原理是相同的,但我从未使用过它。
回复:优雅地退出加载项但我仍然有兴趣知道如何 Throw() 而不导致出现任何错误对话框。 我认为 txnelson 最近的帖子解决了这个问题,但我对它的作用和工作原理感到困惑。
回复:优雅地退出加载项我想我在查看 txnelson 的一篇帖子的同时找到了解决方案。 在应用程序脚本中,我输入:
If( N Table() == 0,
Throw( "Add-in requires an open data table." )
);
dt = Current Data Table();
If( N Cols( dt ) < 2,
Throw(
"Add-in requires a table with at least two columns."
)
);
回复:优雅地退出加载项我尝试在脚本编辑器中对其进行调试,但它关闭了编辑器而不保存。 我没有意识到发生了什么,直到我重新做了并再次运行它。该函数应该在调用之前定义,因此看起来不正常。
我从未使用过应用程序生成器。 我在调用 GUI 之前在脚本级别执行此类控制。 基本上我的脚本看起来像:
1. 最初的东西在上面
2.主要脚本函数
3.分配dt并决定是否进入GUI
4. GUI,其中“确定”按钮调用脚本函数。
这是我检查数据表的方法。 您可以使用此版本的修改版本,并检查 ncol(dt) >= 2。
dtData = current data table();
try(dtData << get name, throw(New Window("No Data Table Found",<<MODAL></MODAL>