Java보다 짧고, 안전하고, 강력한 함수를 자유롭게 다룰 수 있는 현대적인 언어
최고 등급으로 대우받는 First-Class Function
⇒ 람다 표현식?
Kotlin DSL
fun main() {
// value: 고정값 (final)
val name: String;
val age: Int;
// 변하는 값
var nickname: String;
// 1. 함수를 변수에 저장할 수 있다.
val add = { a: Int, b: Int -> a + b } // 간단한 람다 선언
val add2: (Int, Int) -> Int = { a, b -> a + b }
val sum = add(3,7)
println(sum)
// 2. 함수를 다른 함수의 인자로 전달할 수 있다.
fun operate(op: (Int, Int) -> Int): Int {
return op(3, 10);
}
println(operate(add))
// 3. 함수를 다른 함수의 반환값으로 사용할 수 있음
fun operate2(op: (Int, Int) -> Int): (Int, Int) -> Int{
return op
}
}
fun main() {
val student = Student("ahn", 18, "wooky") // not null
val studentNull: Student // nullable
println(student.name)
// println(studentNull.name) // null-safe
}