print() 的变量作用域行为应该与其他所有函数的行为保持一致。是什么促使你提出这个愿望清单请求?
我花了很多时间调试一个变量作用域的问题。如果在函数内部使用 `{default local}`(我几乎总是这样做),那么除非用 `::` 显式指定作用域(我之前并不知道这一点),否则该函数无法访问全局变量。然而,即使没有 `::`,`print()` 函数也会默默地查找自身——考虑到 `print()` 是一个非常基础的调试工具,这让人非常困惑!
您希望看到哪些改进?
在变量作用域方面,`print()` 函数的行为应该与其他函数相同。
为什么这个想法很重要?
目前的行为不合逻辑且前后矛盾。
JMP19.1.1。
自动化和脚本编写回复:print() 函数的变量作用域行为应与其他函数保持一致 - 状态已更改为:需要更多信息嗨@JohnJoyceFlusso - 感谢您提交此需求。您能否提供一个脚本来演示此行为?
回复:print() 的变量作用域行为应该与其他所有函数保持一致以下是一个演示该问题的最小脚本:Print() 函数可以正常工作,但 msgbox() 函数却无法正常工作。
注意:这并非一个实用功能,只是为了演示问题。
遗憾的是,在变量作用域方面,print() 函数的行为与其他函数不同。
我从未见过其他语言会这样做。这似乎有问题。
我的建议是,Print() 函数不应该与其他函数有所不同。
dummy = "Hello";
test = Function( {},
{default local},
Print( dummy );
msgbox( dummy );
);
test();
回复:print() 的变量作用域行为应该与其他所有函数保持一致很抱歉将 msgbox() 函数与系统内置函数混淆了,该函数实际上是我自己编写的,并非系统内置函数。
这里有一个例子可以说明我的观点……第一次尝试使用单选按钮时,没有显示任何选项,因为“options”没有在本地定义;然而 print() 却可以神奇地访问它。
一旦我在本地定义了选项,同样的单选按钮第二次就能正常工作了。
关键在于 print() 函数的行为不应该与其他任何函数不同,否则将其用作调试工具就会变得有些棘手。
options = {"A", "B"};
test = Function( {},
{default local},
Print( options );
New Window( "Pick one",
<
<MODAL></MODAL>
<BR /> <BR />
回复:print() 的变量作用域行为应该与其他所有函数保持一致@JohnJoyceFlusso
你仍然可以在函数内部使用 `eval( eval expr( ) )` 来访问“options”变量。对我来说,这样做是有效的:
options = {"A", "B"};
test = Function( {},
{default local},
Print( options );
eval( eval expr( New Window( "Pick one",
<
<MODAL></MODAL>
回复:print() 的变量作用域行为应该与其他所有函数保持一致谢谢,是的,确实如此(就像通过 ::options 访问“选项”一样,这是技术支持人员指出的)。
我的问题仍然是 Print() 函数的行为与其他函数不同,这不合逻辑。