Kotlin/문법

Scope Functions (영역함수)

내손은개발 🐾 2024. 3. 7. 20:44
fun main() {
    //run
    Student().run {
        number = "1234"
        name = "run1"
        printInfo() //1234 run1
    }

    val res = Student().run {
        number = "4567"
        name = "run2"
        "$number $name"
    }
    println(res) //4567 run2

    //let
    // it을 거쳐서 프로퍼티를 호출할 수 있다.
    Student().let {
        it.number = "012"
        it.name = "let"
        it.printInfo() //012 let
    }

    //with
    // run과 유사하게 it을 거치지 않고 바로 변수를 호출할 수 있다.
    // 그러나 with함수의 인자로 클래스 객체를 받는다.
    with(Student()){
        number = "112"
        name = "with"
        printInfo()//112 with
    }


    //apply
    // 객체를 반환
    Student().apply {
        number = "1234"
        name=  "apply"
    }.printInfo() //1234 apply

    //also
    //apply와 유사하지만 프로퍼티를 바로 호출하지 않고 it을 거쳐서 호출
    //객체를 반환한다.
    Student().also {
        it.number = "123"
        it.name = "also"
    }.printInfo()//123 also
    
    //item?.let{ ...
    //item이 null이 아닐 때 안의 내용을 실행
    //null에 대한 안정성을 확보할 수 있다.


}

class Student() {
    var number = ""
    var name = ""
    fun printInfo() {
        println("$number $name")
    }
}

'Kotlin > 문법' 카테고리의 다른 글

코루틴(Coroutine) ?  (0) 2024.03.13
Kotlin - Pair, Triple  (0) 2024.03.13
Kotlin - repeat  (0) 2024.02.19
Kotlin - startsWith, andsWith  (0) 2024.02.19
Kotlin - StringBuilder  (0) 2024.02.19