进行更改后运行脚本。 不关闭并重新打开脚本就无法工作 - 为什么?我正在学习 JSL 并获得了一种我认为我开始时没有的行为。 我想知道这种行为是预期的还是由于我无意中进行的设置更改而发生的。
我有一个简单的“主”脚本,它调用一个函数和另一个脚本。 当我重新打开 JMP 并重新运行主脚本或它调用的其他函数/脚本时,它们都运行良好并产生预期的结果。 但是,当我对它们中的任何一个进行更改时,它们不起作用(例如,如果我注释包含在主脚本中的脚本,例如下面的最后一行)。 如果我关闭所有打开的脚本,然后重新启动它们,它们会再次工作。 来自其他编程语言,我不希望这种行为。 任何方向都非常感谢
下面是我的主脚本示例(我在 JMP13 上)。
//clear log ();<BR />getDataTable = getDataTable4partID("partID","partIDname");
include ("plotallcharts.jsl");
include ("generateJournal.jsl");评论上面的最后一行(或者如果我取消注释清除日志())即
//clear log ();
getDataTable = getDataTable4partID("partID","partIDname");
include ("plotallcharts.jsl");
//include ("generateJournal.jsl");在上面的脚本中给了我以下错误
Name Unresolved: getDataTable4partID in access or evaluation of 'getDataTable4partID' , getDataTable4partID( "partID", "partIDname" ) /*###*/
任何方向都非常感谢。
脚本编写回复:进行更改后运行脚本。 不关闭并重新打开脚本就无法工作 - 为什么?在您的示例中,我没有看到您定义函数的位置
getDataTable4partID
JSL 是一种解释型语言,需要在调用代码之前创建代码中引用的任何项目。它不是一种编译语言,它首先通过所有代码和识别函数等。现在可能令人困惑的是,一旦函数被定义,它将保留在内存中并可用,直到它被清除
clear symbols();<BR />// or<BR />clear globals();
如果您牢记这一点来执行您的代码,您可能会明白为什么您的 JSL 找不到该函数。
回复:进行更改后运行脚本。 不关闭并重新打开脚本就无法工作 - 为什么?谢谢@txnelson .
这是函数
getDataTable4partID
你是不是建议我用
clear symbols();
// clear globals();
在我的主脚本的顶部?
如果是,那么我已经厌倦了它而没有任何行为改变。
另外,我忘记在上面提到当主脚本没有运行(在对其进行更改之后)并且我需要重新启动 JMP 以使脚本再次按预期运行时,我还需要运行我的主脚本正在调用的函数,一次,没有它我的主脚本不会运行。 这显然是一种不受欢迎的行为,我担心我没有正确地做事。
回复:进行更改后运行脚本。 不关闭并重新打开脚本就无法工作 - 为什么?你应该开始你的整个脚本:
Names Default to Here( 1 );
Clear Symbols();
这将稳定命名空间环境并清除所有先前的值,从而在每次从顶部运行代码时重新开始。
回复:进行更改后运行脚本。 不关闭并重新打开脚本就无法工作 - 为什么?谢谢@txnelson . 好的,这就是我所做的,现在即使在关闭并重新运行或重新启动 JMP 之后,我的脚本和函数也无法工作。
我的主要脚本
Names Default to Here( 1 );
Clear Symbols();
getDataTable = getDataTable4partID("partID","partIDname");
include ("plotallcharts.jsl");
include ("generateJournal.jsl");我的功能是(没有数据库详细信息)
Names Default to Here (1)
getDataTable4PartID = Function({PartID}, {dtTemp},
dtTemp = Open Database("connectionstring",
"select '" || PartID || "' as value
from dual",
PartID
);
return(dtTemp);
);和我的脚本
plotallcharts.jsl;
也有它的拳头线
Names Default to Here (1)
我仍然收到错误
Name Unresolved: getDataTable4partID in access or evaluation of 'getDataTable4partID' , getDataTable4partID( "partID", "partIDname" ) /*###*/
但有时运行主脚本时日志没有显示任何内容。
回复:进行更改后运行脚本。 不关闭并重新打开脚本就无法工作 - 为什么?Names Default to Here( 1 );
Clear Symbols();
getDataTable = getDataTable4partID("partID","partIDname");
include ("plotallcharts.jsl");
include ("generateJournal.jsl");
我假设这是您代码的第一部分。 正确的?
代码中的第三行正在寻找一个名为“getDataTable4partID”的函数。当代码尝试运行该行时,尚未定义该函数。您需要先执行函数定义,然后才能调用它。