Kotlin

Kotlin - DSL(Domain-Specific Language)

J_Bin 2022. 6. 22. 11:00

# Person을 위한 DSL 만들기

package chap02.section1


data class Person(var name : String? = null, var age : Int? = null, var job : Job? = null)

data class Job(var category : String? = null, var position : String? = null, var extension : Int? = null)


fun person(block : Person.() -> Unit) : Person = Person().apply(block)

fun Person.job(block: Job.() -> Unit){
    job = Job().apply(block)
}


fun main() {

    val person = person {       // 간단한 DSL이 적용된 생성 방법
        name = "kildong"
        age = 40
        job {
            category = "IT"
            position = "Android Developer"
            extension = 1234
        }
    }

    println(person)

}