我有一个脚本,它在启动时执行大量计算,并定义了一些函数,我想确保在运行其他脚本时全部加载它。我正在运行为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