打开和关闭私有数据表为了保持我的许多脚本干净,我经常使用“私有”。 但是,如果我正在对脚本进行故障排除,将表设置为私有会妨碍我,我需要注释掉并希望在我进行更改以查看更改是否有效时记得取消注释。
有没有办法,或者 JMP 是否已经有了全局方法来打开或关闭私有表? 在我的脑海中,我可以花时间复制我的代码,无论是否使用私有代码,并将其绑定到测试变量,但这似乎不是最佳答案。
不确定是否有关于如何做到这一点的任何想法。 谢谢!
自动化和脚本回复:打开和关闭私有数据表太棒了,文斯! 这与我最终所做的类似,但在允许数据视图双向传输方面要优雅得多。
回复:打开和关闭私有数据表同意@Craige_Hales和@txnelson在那些点上。@雷塞尔,我通常选择私有表的主要原因是当我有一个脚本可以对许多表进行更改/更新/等时。 如果它们单独存在,当窗口出现、消失等时,它们会在用户面前的屏幕上非常闪亮。如果它们不可见,用户可能会在窗口列表中看到很多活动,这也可能是分心。
大多数时候我选择私有表,因为它们允许为用户提供最干净的界面,只有必要的可视化步骤是可视化的。 根据表的数量和用户的计算机,RAM 的好处也是整体速度的提高。
回复:打开和关闭私有数据表吉姆是对的;私有表没有创建操作系统窗口结构,而不可见表有一个不显示的窗口。 如果有 100 或 1000 个表,可能会节省少量的 CPU 和内存。
我唯一一次使用 private 是在我写的时候文件捕捉器并希望应用程序安静地运行,而不会干扰运行的任何其他 JSL 的 JSL 环境。 您基本上根本无法检测到私有数据表。 它确实有一个有点侵入的列名。
回复:打开和关闭私有数据表内森,这有用吗?
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
privateTable = Function({bool,dt},{default local},
table_name = dt << Get Name;
If(!bool & !(dt << HasDataView), // no table but you want one
print("making "||table_name||" public");
dt << New Data View;
Return(dt);
, // elif
bool & dt << HasDataView, // you have a table but want it private
print("making "||table_name||" private");
dt_sub = dt << Subset( All rows, Selected columns only( 0 ), "private" );
close(dt, no save);
dt_sub << Set Name(table_name);
return(dt_sub);
, // else just return what's given
print("passthrough");
return(dt);
)
);
dt = privateTable(1, dt); // should make it private
wait(2);
dt = privateTable(1, dt); // should do nothing
wait(2);
dt = privateTable(0, dt); // should do make it visible
wait(2);
dt = privateTable(1, dt); // should do make it private again
回复:打开和关闭私有数据表节省 RAM 是好处。私有表不创建任何可见对象。如果所有这些对象可见,则必须将它们映射到内存。
回复:打开和关闭私有数据表使用私有表的具体好处是什么? 节省内存?
回复:打开和关闭私有数据表是的! 这绝对在我的雷达上。 我有一个功能/实用程序库,我手头有很多东西(并分发),转向自定义功能方面是许多动态功能的长期计划。
回复:打开和关闭私有数据表如果您经常需要该功能,您可能会受益于创建自定义功能创建自定义函数、转换和格式 (jmp.com) .这样你也可以直接从脚本索引中看到自定义函数。
回复:打开和关闭私有数据表感谢大家! 我最终做了以下操作,虽然不是很理想,但应该工作得很好。 我创建了一个函数并在我的脚本顶部有一个变量来基本上打开/关闭私有
seePrivateTables = 1;
unprivatizeTable = Function({bool,tableName},{default local},
If(bool == 1,
tableName << New Data View;
Return(tableName)
,
Return(tableName)
)
);
// ... various code
dt1 = dt << Summary(.... , private);
dt1 = unprivatizeTable(seePrivateTables, dt1);只要我记得在创建新表时调用该函数,我就应该能够批量打开和关闭私有表。
回复:打开和关闭私有数据表JMP 跟踪可见和不可见的表。 例如,您可以在主窗口中关注它们。 私有表仅由创建它们的代码跟踪。 如果在覆盖持有其句柄的 JSL 变量之前未能关闭私有表,则该表仍在内存中但无法访问。 它会在 JMP 终止时关闭。 (Window->CloseAllDataTables 找不到私有表,不会关闭它们。)
我也很确定 JMP 不会公开将可见或不可见表变为私有的方法。 如果您有句柄,您可以将私有表变成不可见表,如下所示:
dtA = Open( "$SAMPLE_DATA/Big Class.jmp", private );
// getting the data box makes it invisible
b = dtA << New Data Box();
// then show window makes it visible
dtA << Show Window;
不幸的是,不可见的关键字是关键字并且不能作为变量传递,至少不能传递给 open()。 不确定子集等。可能您能做的最好的事情是添加对用户函数的调用,该函数在您创建或打开表的每个点之后执行类似上述的操作。
回复:打开和关闭私有数据表您可以使用 << 新数据视图使私有表可见。 我不是 100% 了解它在这种情况下的作用,但它似乎使私有表可见并且我已将其用于调试:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp", private);
wait(2);
dt << New Data View;
不知道如何再次将其设为私有,但是 << Show Window(0);至少会使其不可见。
回复:打开和关闭私有数据表我不知道能够打开和关闭 Private,因为它需要在内存中即时构建所有显示对象。但是,您可以使用显示窗口消息来显示/隐藏普通或不可见的数据表。
data table("Daily Blood Pressure")<<SHOW window=""></SHOW>