関数式、ラムダ式、ラムダ、デリゲートとは

各言語で関数(ファンクション)を変数に代入するという共通の概念について説明します。

この概念は、「ファーストクラス関数」または「ファーストクラスオブジェクト」として関数が扱われることを意味します。

言語によって、関数式、ラムダ式、ラムダ、デリゲートと呼ばれる概念で実装されています。

これらの例では、関数を変数に代入し、その変数を使って関数を呼び出しています。

この機能は、高階関数(こうかいかんすう:他の関数を引数として受け取ったり、戻り値として関数を返す関数)を実装する際に非常に便利です。

JavaScriptの場合

変数に関数を代入

const myFunction = function(x) {
return x * 2;
};

実行方法

const result = myFunction(5);
console.log(result); // 10 を出力

Pythonの場合

変数に関数を代入

def my_function(x):
  return x * 2

another_function = my_function

Rubyの場合

変数に関数を代入

def my_function(x)
  x * 2
end

another_function = method(:my_function)

実行方法

result = another_function.call(5)
puts result  # 10 を出力

Java

変数に関数を代入(Java 8以降の関数型インターフェースを利用)

import java.util.function.Function;

public class Main {
  public static void main(String[] args) {
    Function<Integer, Integer> myFunction = x -> x * 2;
  }
}

実行方法:

int result = myFunction.apply(5);
System.out.println(result);  // 10 を出力