11.12.2 Anonymous Functions

Last-modified: 2025-03-14 (金) 22:17:29

11.12.2 無名関数

匿名関数は構文を使って定義されます

@(argument-list) expression

引数リストに見つからない変数は、囲んでいるスコープから継承されます。匿名関数は、式から単純な名前のない関数を作成したり、他の関数への呼び出しをラップして、のような関数で使用できるように適応させたりするのに役立ちますquad。たとえば、

f = @(x) x.^2;
quad (f, 0, 10)
   ⇒ 333.33

式から単純な名前のない関数を作成しx.^2、それをに渡しますquad。

quad (@(x) sin (x), 0, pi)
   ⇒ 2

別の関数をラップし、

a = 1;
b = 2;
quad (@(x) betainc (x, a, b), 0, 0.4)
   ⇒ 0.13867

は、複数のパラメータを持つ関数を で必要な形式に適合させます 。この例では、に渡されるaとbquadの値は現在の環境から継承されます。 betainc

パフォーマンス上の理由から、既存の関数をラップする匿名関数を定義するよりも、既存のOctave関数へのハンドルを使用する方がよいことに注意してください。sin (x)コードを次のように記述すると、の統合は5倍高速になります。

quad (@sin, 0, pi)

匿名関数を使用する代わりに@(x) sin (x)、匿名関数よりも良い選択肢となる機能的同等物を持つ演算子が多数あります。

f = @(x, y) x + y

これは次のようにコード化される。

f = @plus

関数形式も持つ演算子のリストについては、 「演算子のオーバーロード」を参照してください。