ホームに戻る
出典 :
関連 :
目次 :
無名関数(Anonymous Function / Nameless Function)とは
名前を付けずに定義された関数のこと。匿名関数とも呼ばれる。
一度しか用いない関数であれば、名前を付けないことで名前の衝突を回避でき、また 無名関数(式)を関数の引数として直接渡すことができる (むしろこれが主用途である)。
比較的新しい概念で、C++(C++11以降)、C#、Java、JavaScript、Python、Rubyなどのモダン言語で用いることができる。後述の ラムダ式を用いた表現が一般的 。
無名関数を用いることで、高階関数(関数を引数または戻り値とする関数)の記述がより容易となる。
無名関数の記述例
引数リストと式を対にした「ラムダ式(Lambda Expression)」が現在では主流となっている。
C# 2.0では「匿名メソッド式」がサポートされていたが、C# 3.0でより簡便かつ多用途なラムダ式が導入された。
C++(C++11以降) : ラムダ式
通常の関数定義における関数名を "[]" に置き換える。

C#(C# 2.0) : 匿名メソッド式
delegate キーワードが必要。C++のラムダ式と似た記述となる。

C#(C# 3.0) : ラムダ式
引数と式を=>
で結ぶ。

変数の型が推論できる場合はさらに簡略化できる。

ラムダ式が単文の場合は、{} 、return 、; が省略できる。

さらに引数が一つだけの場合は引数リストの括弧 () も省略できる。
実際の用途
無名関数(メソッド)自体を引数として、他の関数に渡すのが主な用途となる。
C#においてはLINQが代表的。