全域變數(Global Variables)

在宣告變數時可以使用 global 關鍵字將變數宣告為全域變數(Global Variables),例如:

global a
global a b
global c = 2
global d = 3 e f = 5

被宣告為全域的變數不需要以參數的形式傳入函數中,即可直接在函數中使用。

使用 global 宣告全域變數時,只能宣告一次,重複宣告不會有作用,例如:

global gvar = 1
global gvar = 2

此時 gvar 的值是 1,不是 2

若要在函數中使用全域變數必須在函數中使用 global 宣告變數,例如:

global x
function f ()
  x = 1;
endfunction
f ()

這樣執行 f() 函數並不會將全域變數 x 變數指定為 1,要將全域變數 x 指定為 1 必須在函數中使用 global 宣告變數:

function f ()
  global x;
  x = 1;
endfunction

將全域變數以參數的形式傳入函數中時,Octave 會將全域變數複製一份在函數中,不會影響到原來的全域變數,例如定義一個函數 f(x)

function f (x)
  x = 0
endfunction

另外再宣告一個全域變數:

global x = 13

將此全域變數傳入 f() 中:

f (x)

輸出為

x = 0

但最外層的全域變數 x 的值還是沒有改變,其值還是維持 13

isglobal (name)

isglobal(name) 函數會判斷變數 name 是否為可見的全域變數。例如:!

global x
isglobal ("x")

輸出為

ans =  1