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