vs Java

Java보다 짧고, 안전하고, 강력한 함수를 자유롭게 다룰 수 있는 현대적인 언어

일급 함수

최고 등급으로 대우받는 First-Class Function

⇒ 람다 표현식?

Gradle-Kotlin

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
    }
}

Type system

fun main() {
    val student = Student("ahn", 18, "wooky") // not null
    val studentNull: Student // nullable

    println(student.name)
    // println(studentNull.name) // null-safe
}

syntax