假设我有三个八度音阶脚本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);
不确定这是最好的解决方案,但我最终创建了一个包装器脚本,从中调用所有其他脚本。我把全局变量放在包装器脚本