[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 표현식을 사용하여 확장 함수를 통해 패턴매칭을 쉽게 수행할 수 있습니다.

참고 자료:

  1. Kotlin 공식 문서: Sealed classes
  2. Kotlin In Action, Dmitry Jemerov and Svetlana Isakova, Manning Publications, 2017.