假设我有三个八度脚本a.m, b.m, c.m
和两个全局变量x, y
。是否可以以这样的方式定义这些全局变量,使它们可以跨脚本共享?例如,在单独的包含文件中?
更多通常,GNU八度中的全局变量如何工作?
答案 0 :(得分:8)
您似乎必须声明变量global,并且还必须明确告诉Octave您引用的变量位于不同的(全局)范围内。
在library.m
中global x = 1;
在main.m
中function ret = foo()
global x;
5 * x;
endfunction
foo()应返回5
答案 1 :(得分:2)
创建一个名为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)
不确定这是最好的解决方案,但我最终创建了一个包装器脚本,从中调用所有其他脚本。我把我的全局变量放在包装脚本
中