muqhc
대표칭호 없음
F#에 있는 활성 패턴을 코틀린에 구현(?) 해보았습니다.
다음의 Color 클레스가 있다고 합시다.
// Just a 'Color' class class Color(val hex: Int)
이때, 다음과 같이 RGB 활성 패턴을 만들 수 있습니다.
val RGB = // create Active Pattern for 'Color' ActivePattern<Color, (red:Int,green:Int,blue:Int) -> Any> { val blue = input.hex % 256 val green = (input.hex shr 8) % 256 val red = (input.hex shr 16) % 256 export(red,green,blue) }
그리고 다음과 같이 Color를 RGB 활성 패턴에 매칭 할 수 있습니다.
val obj = Color(0xFF00FF) // do pattern match match(obj) { // use Active Pattern case(RGB) { red, green, blue -> println("Color(red=$red,green=$green,blue=$blue)") } // when match nothing else_ { throw Exception("Not a Color") } }
쓸일이 있을지는 모르겠으나,
자세한건 -> Github(https://github.com/muqhc/kotching) 를 참고 할 수 있습니다.
댓글이 없습니다.
새로운 댓글을 등록해 주세요!