関数オブジェクトとは? わかりやすく解説

関数オブジェクト

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/04/08 18:38 UTC 版)

関数オブジェクト(かんすうオブジェクト、: function object)は、プログラミング言語において、関数(サブルーチンまたはプロシージャ)を、オブジェクトとしたものである。手続きオブジェクトとも言う(プロシージャ=手続き)[要出典]。なお、ここでのオブジェクトの語は、いわゆるオブジェクト指向のそれに限らず、「第一級オブジェクト」という語におけるのと同じ、メモリ上に領域を確保されたもの、といった意味である。関数が第一級オブジェクトである場合は特に第一級関数と言う。


注釈

  1. ^ 匿名クラスの構文であれば、実際にはインタフェースだけでなく任意の具象クラスや抽象クラスを継承することもできるが、Javaでは実装(クラス)の多重継承ができず、クラスを使うと自由度が低下するため、一般的に関数オブジェクトとして使われるのはインタフェースである。

出典

  1. ^ C++ FAQ [33.15] What's the difference between a functionoid and a functor?
  2. ^ イマドキのJava徹底入門(13) ラムダ式の入力パラメータにvarを使用する | TECH+(テックプラス)
  3. ^ スクリプトを記述する上では簡単なように設計されているが、内部ではわりとコストが掛かる。ブロックはエスケープしないため軽い処理で扱うことができるし、元々イテレータのためのものだったため、繰り返し処理のために使われることからも、軽いほうが望ましい。それがオブジェクトになれば、メソッドの返り値などになり得るために、重い処理となるためである。



関数オブジェクト

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/04/29 13:43 UTC 版)

Standard Template Library」の記事における「関数オブジェクト」の解説

関数オブジェクトはoperator()関数呼び出し演算子)をオーバーロードしたクラス一種であり、オブジェクトありながら関数のように呼び出せるという特徴を持つ。ファンクタ (functor) とも呼ばれる。 関数オブジェクトの定義は例えば以下のようなのであるstruct square{ template T operator()(T n) const { return n * n; }}; 一般に関数オブジェクトで表され関数オブジェクトとして作成したものをアルゴリズム値渡しするため、同じよう目的使用できる関数ポインタよりもオーバーヘッド大きいと思われることもあるが、実際にコンパイラ最適化コードインライン展開が行われ関数呼び出し無くなる可能性が高いため、関数ポインタを使うよりも高速であることが多い。例えばC標準ライブラリのqsortよりSTLアルゴリズムsortの方が往々にして高速であるというのはよく知られている。 STLでは関数オブジェクトの代わりに関数ポインタを使うことも可能である。 また、標準規格C++11より導入されラムダ式を使うことで、関数オブジェクトの定義をより簡潔に記述できるようになった

※この「関数オブジェクト」の解説は、「Standard Template Library」の解説の一部です。
「関数オブジェクト」を含む「Standard Template Library」の記事については、「Standard Template Library」の概要を参照ください。

ウィキペディア小見出し辞書の「関数オブジェクト」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「関数オブジェクト」の関連用語

関数オブジェクトのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



関数オブジェクトのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの関数オブジェクト (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのStandard Template Library (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS