如何在多个倍频程脚本中共享全局变量



假设我有三个八度音阶脚本a.m, b.m, c.m和两个全局变量x, y。是否可以定义这些全局变量,使它们可以在脚本之间共享?例如,在单独的包含文件中?

更一般地说,GNU倍频程中的全局变量是如何工作的?

您似乎必须声明变量为全局变量,而且还必须明确告诉Octave您引用的变量在不同的(全局)范围内。

在库.m 中

global x = 1;

主.m

function ret = foo()
    global x;
    5 * x;
endfunction

foo()应返回5

如何在Octave中使用全局变量:

制作一个名为tmp.m的文件,并在其中放入以下代码

global x;   %make a global variable called x
x = 5;       %assign 5 to your global variable
tmp2();     %invoke another function

制作另一个名为tmp2.m的文件,并在其中放入以下代码:

function tmp2()
  %the following line is not optional, it tells this function go go out and get
  %the global variable, otherwise, x will not be available.
  global x 
  x
end

当你像这样运行上面的代码时:

octave tmp.m

你会得到这样的输出:

x =  5

全局变量x保存在tmp.m中,并在tmp2.m 中检索

类似于:

具有全局变量globals.m的文件,其中包含:

global my_global = 100;

只需在每个文件中使用source。例如:

source globals.m
global my_global
printf("%dn", my_global);

不确定这是最好的解决方案,但我最终创建了一个包装器脚本,从中调用所有其他脚本。我把全局变量放在包装器脚本

相关内容

  • 没有找到相关文章