Kotlin ‐ 연산자 오버로딩과 Kotlin DSL - dnwls16071/Backend_Summary GitHub Wiki

📚 연산자 오버로딩

  • 코틀린 연산자 오버로딩은 특정 연산자(예: +, -, *)를 사용자 정의 클래스에 맞게 재정의하여 객체에 대한 연산을 보다 직관적으로 표현하는 기능아다.
  • 코틀린은 operator 키워드를 사용하여 특정 함수를 연산자와 연결함으로써 이 기능을 제공한다.
data class Point(val x: Int, val y: Int)

// 멤버 함수로 구현
operator fun Point.plus(other: Point): Point {
    return Point(x + other.x, y + other.y)
}

fun main() {
    val p1 = Point(10, 20)
    val p2 = Point(30, 40)
    val p3 = p1 + p2 // p1.plus(p2)가 호출됨
    println(p3) // Point(x=40, y=60)
}

📚 Kotlin DSL❓

  • DSL(Domain-Specific-Language): HTML이나 SQL처럼 특정 목적을 위해 존재하는 언어이다.
import com.example.html.* // see declarations below

fun result() =
    html {
        head {
            title {+"XML encoding with Kotlin"}
        }
        body {
            h1 {+"XML encoding with Kotlin"}
            p  {+"this format can be used as an alternative markup to XML"}

            // an element with attributes and text content
            a(href = "https://kotlinlang.org") {+"Kotlin"}

            // mixed content
            p {
                +"This is some"
                b {+"mixed"}
                +"text. For more see the"
                a(href = "https://kotlinlang.org") {+"Kotlin"}
                +"project"
            }
            p {+"some text"}

            // content generated by
            p {
                for (arg in args)
                    +arg
            }
        }
    }