如何跨多个八度音阶脚本共享全局变量?

时间:2012-01-11 00:41:23

标签: global-variables octave

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

更多通常,GNU八度中的全局变量如何工作?

4 个答案:

答案 0 :(得分:8)

您似乎必须声明变量global,并且必须明确告诉Octave您引用的变量位于不同的(全局)范围内。

在library.m

global x = 1;

在main.m

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

foo()应返回5

答案 1 :(得分:2)

如何在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

中检索

答案 2 :(得分:2)

类似的东西:

包含全局变量globals.m的文件:

global my_global = 100;

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

source globals.m

global my_global

printf("%d\n", my_global);

答案 3 :(得分:0)

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

相关问题