2012-12-04 18 views
3

所以我得到这个功能:在从脚本文件中加载一个函数中使用全局变量

function M = getA(X) 
global h; 
QPL96 = h; 
M = QPL96; 
endfunction 

现在:

octave:115> h 
h = 0.10000 
octave:116> getA(X) 
ans = [](0x0) 

是不是很奇怪吗? 只要没有涉及h的表达式就可以工作。否则返回垃圾。 为什么我不能这样做?我必须通过提出一个论点来解决它吗?

回答

3

您必须声明h作为全球任何地方,你想使用“全球”h,并且包括你的主体。所以在提示符下键入global h,你会没事的。请参阅documentation。以下工作适合我:

octave> function M = getA(X) 
> global h; 
> M = h; 
> endfunction 
octave> h = 0.01 
h = 0.0010000 
octave> getA 
ans = [](0x0) 
octave> global h 
octave> h 
h = [](0x0) 
octave> h = 0.01 
h = 0.010000 
octave> h 
h = 0.010000 
octave> getA 
ans = 0.010000 

但实际上,你不应该使用全局变量,这是非常糟糕的做法。将变量作为参数传递。如果你发现自己传递了同一组变量,传递一个结构体,但仍然不使用全局变量。

编辑:this是同样的问题。

+0

谢谢! 抱歉.. – user1854885

相关问题