2012-12-04 17 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

相關問題