|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。
関数オブジェクト(かんすうオブジェクト、)は、プログラミング言語において、関数(サブルーチンないしプロシージャ)を、オブジェクトとしたものである。手続きオブジェクトとも言う(プロシージャ=手続き)。なお、ここでのオブジェクトの語は、いわゆるオブジェクト指向のそれに限らず、「第一級オブジェクト」という語におけるのと同じ、メモリ上に空間を確保されたもの、といった意味である。関数が第一級オブジェクトである場合は特に第一級関数と言う。 関数と変数の名前空間が共通である言語の場合、構文の設計によっては、 a = hoge(b) といったような、通常のサブルーチン呼び出しと全く同じ構文で、関数オブジェクトが意味するサブルーチンを呼び出せる言語もある。また、変数束縛が閉じられた関数オブジェクトはクロージャである。C#などには関数オブジェクトのようなものとして、オブジェクトのインスタンスとそのメソッドである手続きとを結びつけている、デリゲートがある。無名関数も参照。 == 用途 == 関数オブジェクトの典型的な用途は、より優れたコールバックを記述することである。C言語では、コールバックには関数へのポインタを使う他ないが、コールバックの内外で状態変数を共有できない。この制限のために、関数の動的な振る舞いが制約されてしまう。以下に擬似コードで例を示す。 これに対し、関数オブジェクトを使うことでFacade パターンを実装し、こうした問題を解決することができる。 LISP や、C++、Java、Python、Ruby などの現代的なオブジェクト指向言語は、ほとんどが関数オブジェクト、ないし同等の機能をサポートしており、さらに有意義な使い方をしているものもある。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「関数オブジェクト」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Function object 」があります。 スポンサード リンク
|