7.1 Global Variables

Last-modified: 2025-03-04 (火) 20:16:02

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.