LoginSignup
24
19

More than 5 years have passed since last update.

Rubyのラムダ式の文法がわからなかったので調べました。
また、普段よく使う言語にもラムダ式があるので、一緒に調べてまとめました。

C#

C# はラムダ式を使う場合はデリゲートを定義します。

delegate int Plus(int a, int b);

Plus plus = (a, b) => (a + b);
plus(5, 3) // => 8

C# では delegate を定義しないとラムダ式が使えないのですが、標準で Func という名前のデリゲートが用意されています。

// delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2)

Func<int, int, int> plus = (a, b) => (a + b);
plus(5, 3) // => 8

Java 8

Java では関数型インターフェースを定義します。関数型インターフェースとは抽象メソッドを1つ定義したインターフェースのことです。
@FunctionalInterface はコンパイル時に関数型インターフェースの条件を満たさないとコンパイルエラーになります。

@FunctionalInterface
interface Plus {
    int apply(int a, int b);
}

Plus plus = (a, b) -> (a + b);
plus.apply(5, 3); // => 8

Groovy

Groovy はラムダ式ではなく、クロージャを使います。

def plus = { a, b -> (a + b) }
plus(5, 3) // => 8

Ruby

plus = -> (a, b) { (a + b) }
plus.(5, 3) #=> 8

JavaScript

var plus = function (a, b) { return (a + b); }
plus(5, 3);

C++

g++ -std=c++11 lambda.cpp
auto plus = [](int a, int b){ return (a + b); };
plus(5, 3) // => 8
24
19
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
19