11.12.1 Function Handles

Last-modified: 2025-03-14 (金) 22:15:33

11.12.1 関数ハンドル

関数ハンドルは別の関数へのポインタであり、構文で定義されます。

@function-name

例えば、

f = @sin;

f関数 を参照する というsin関数ハンドルを作成します。

quad関数ハンドルは、他の関数を間接的に呼び出したり、や など の別の関数に関数を引数として渡したりするために使用されますfsolve。例:

f = @sin;
quad (f, 0, pi)
   ⇒ 2

関数ハンドルを使用して関数を呼び出すにはfeval、関数ハンドルの名前に続けて引数リストを記述します。引数がない場合は、空の引数リストを使用する必要があります。()'。 例えば:

f = @sin;
feval (f, pi/4)
   ⇒ 0.70711
f (pi/4)
   ⇒ 0.70711

: tf = is_function_handle (x)
xが関数ハンドルの 場合は true を返します。

See also: isa, typeinfo, class, functions.

: s = functions (fcn_handle)
関数ハンドル fcn_handleに関する情報を含む構造体を返します。

構造体s には常に次の 3 つのフィールドが含まれます。

function
数名。匿名関数 (名前なし) の場合、これが実際の関数定義になります。

type
関数のタイプ。

anonymous
この関数は匿名です。

private
この関数は非公開です。

overloaded
関数は既存の関数をオーバーロードします。

simple
この関数は組み込み関数または m ファイル関数です。

subfunction
この関数は、m ファイル内のサブ関数です。

nested
関数はネストされています。

file
関数を実行するために呼び出される m ファイル。匿名関数および組み込み関数の場合、このフィールドは空になります。

さらに、一部の関数タイプでは、追加のフィールドにさらに詳しい情報が返される場合があります。

Warning: functionsはデバッグ目的のみに提供されています。その動作は将来変更される可能性があり、プログラムは特定の出力形式に依存しないようにしてください。

See also: func2str, str2func.

: str = func2str (fcn_handle)
関数ハンドルfcn_handleによって参照される関数の名前を含む文字列を返します。

See also: str2func, functions.

: hfcn = str2func (str)
文字列strから構築された関数ハンドルを返します。

入力は、 などの関数の名前"sin"、または などの関数を定義する文字列になります"@(x) sin (x + pi)"。

プログラミング上の注意: ほとんどの場合、 を使用するよりも、匿名関数構文を使用して Octave パーサーに関数ハンドルを作成させる方が適切です str2func。例:

hfcn = @sin ;
hfcn = @(x) sin (x + pi) ;
See also: func2str, functions.

: vars = symvar (str)
文字列str内のシンボリック変数名を識別します。

i、、などの一般的な定数名やj、piまたはなどInfのオクターブ関数は無視されます。 sinplot

識別された名前は、文字列のセル配列で返されます。変数が見つからない場合、配列は空になります。

例:

symvar ("x^2 + y^2 == 4")
⇒ {
    [1,1] = x
    [2,1] = y
  }