[kotlin] 코틀린 확장 함수를 사용하여 패턴 매칭 작업 처리하는 방법은?
먼저, sealed class를 사용하여 다양한 종류의 패턴을 정의합니다.
sealed class Shape
class Circle(val radius: Double) : Shape()
class Rectangle(val width: Double, val height: Double) : Shape()
다음으로, 해당 sealed class에 대한 확장 함수를 작성합니다.
fun Shape.area(): Double {
return when (this) {
is Circle -> Math.PI * radius * radius
is Rectangle -> width * height
}
}
여기서 sealed class를 사용함으로써, 모든 하위 클래스에 대한 패턴을 정의하고, 확장 함수를 통해 각각의 패턴에 따른 작업을 수행할 수 있습니다.
이제 다음과 같이 패턴매칭으로 작업을 수행할 수 있습니다.
val circle = Circle(5.0)
val rectangle = Rectangle(3.0, 4.0)
println(circle.area()) // 출력: 78.53981633974483
println(rectangle.area()) // 출력: 12.0
이렇게 함으로써, when 표현식을 사용하여 확장 함수를 통해 패턴매칭을 쉽게 수행할 수 있습니다.
참고 자료:
- Kotlin 공식 문서: Sealed classes
- Kotlin In Action, Dmitry Jemerov and Svetlana Isakova, Manning Publications, 2017.