====== ラムダ式 ======
ラムダ式とは、無名関数の書き方の一つ。
無名関数とは名前付けされずに定義された関数のこと。
無名関数だとNewしてOverrideするところを、ラムダ式だと簡潔にかける。
// Java無名関数
public class Main {
public static void main(String[] args) {
Runnable r = new Runnable(){
@Override
public void run() {
System.out.println("Hello lambda.");
}
};
r.run(); // Hello lambda.
}
}
↓
// Javaラムダ式
public class Main {
public static void main(String[] args) {
Runnable r = () -> { System.out.println("Hello lambda."); };
r.run();
}
}
↓
// kotlinラムダ式
public class Main {
fun main(args: Array) {
val r = {print("Hello lambda")}
r()
}
}
===== 省略 =====
val ints = listOf(1,3,5)
// ラムダの基本 { パラメータ -> メソッドの処理 }
val doubled = ints.map({ it -> it * 2 })
↓
// ラムダがその呼び出しに唯一の引数である場合、呼び出しの括弧を完全に省略することができる
val doubled = ints.map { it -> it * 2 }
↓
// 関数リテラルがパラメータを1つだけ持つ場合、その宣言を( -> と一緒に)省略してもよい
// その場合、その名前は、 it になります。
val doubled = ints.map { it * 2 }
>>> println("doubled=${doubled}")
doubled=[2, 6, 10]