我可以从 if 测试将变量和函数从 Octave 脚本文件加载到全局范围内吗?



我有一个脚本,它在启动时执行大量计算,并定义了一些函数,我想确保在运行其他脚本时全部加载它。我正在运行为x86_64-w64-mingw32配置Octave 5.1.0.

我最初尝试仅在其中一个变量未exist('varName')时才调用脚本。这似乎不起作用,所以我将很多变量标记为global,但它们仍然没有加载到全局中,函数也没有。如果我从 REPL 的顶层或其他脚本的顶层(但不是在if测试中(调用它,则该脚本运行良好。我还查看了其他问题,例如八度:从单个文件加载许多函数。

这就是我想做的:

global all;
if (!exist('all'))
prepareData
endif

我想知道如何仅在第一次运行时在prepareData脚本中公开全局变量和函数。

在经历了问题编写过程后,我很清楚我可以简单地将if (!exist('all'))放入原始脚本中,以防止它多次加载数据。所以现在在prepareData脚本中,我只是将昂贵的数据加载放在其中:

global all;
if (!exist('all') || length(all) < 1);
# Expensive load calls
endif

在消费脚本中,我可以简单地调用:

prepareData;
# Happily use data

相关内容

  • 没有找到相关文章

最新更新