7.1 グローバル変数
キーワードを参照: グローバル
グローバル変数は、Octave 内のどこからでもアクセスできる変数です。これは、関数 ( ) を呼び出すときにパラメータとして含めるなど、明示的に渡された場合にのみ、現在のコンテキストの外部からアクセスできるローカル変数とは対照的です。 fcn (local_var1, local_var2)
変数はglobal宣言ステートメントを使用してグローバルとして宣言されます。次のステートメントはすべてグローバル宣言です。
global a global a b global c = 2 global d = 3 e f = 5
global修飾子は次の文末インジケータ(カンマ(')など)までしか適用されないことに注意してください。、')、セミコロン(';')、または改行(''\n'たとえば、次のコードは、1 つのグローバル変数 aと、値 1 が割り当てられる 1 つのローカル変数b を宣言します。
global a, b = 1
グローバル変数はglobal文の中で一度だけ初期化できます。例えば、次のコードを実行すると、
global gvar = 1 global gvar = 2
グローバル変数の値はgvar2ではなく1です。'gvarをクリア' コマンドは上記の動作を変更しませんが、 'すべてクリア' はそうします。
一つのユニバーサル変数にアクセスするには、関数本体内で変数をグローバルとして宣言する必要があります。例えば、
global x function f () x = 1; endfunction f ()
は、グローバル変数の値を 1 に設定しません。x代わりに、 という名前のローカル変数xが作成され、値 1 が割り当てられます。グローバル変数の値を変更するにはx、次のように関数本体内でグローバルとして宣言する必要があります。
function f () global x; x = 1; endfunction
関数のパラメータリストにグローバル変数を渡すと、ローカルコピーが作成され、グローバル値は変更されません。たとえば、関数が
function f (x) x = 0 endfunction
xをトップレベルのグローバル変数として 定義し、
global x = 13
表現
f (x)
関数内のの値は 0 として表示されますが、関数は引数の コピーを使用して動作するため、最上位レベルのxの値は変更されません。x
プログラミング ノート: グローバル変数はコーディングの問題に対する適切な解決策となる場合もありますが、最近のベスト プラクティスではグローバル変数の使用は推奨されていません。グローバル変数に依存するコードは、異なるユーザー間で予期しない動作をすることがあり、デバッグが困難になることがあります。これは、グローバル変数によってシステムの変更が導入され、特定の関数または関数内の特定のループにバグを限定することが困難になるためです。
: tf = isglobal (name)
name がグローバルに表示される変数である 場合は true を返します。
例えば:
global x
isglobal ("x")
⇒ 1
See also: isvarname, exist.