개인 자료란 (JE)

  서버 커뮤니티

Profile muqhc 대표칭호 없음
Profile

커뮤니티 소통 개발하기 잡담

활성 패턴 in Kotlin

2022.05.12 조회 수 1124 추천 수 0

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) 를 참고 할 수 있습니다.




Warning
댓글이 없습니다.

새로운 댓글을 등록해 주세요!

뉴스 및 창작물
/files/thumbnails/487/784/003/262x150.crop.jpg?20240508233607

모드

Windows Borderless 모드에서 악성코드 발견

학교가기싫다

2024-05-08

0

/files/thumbnails/384/778/003/262x150.crop.jpg?20240507003327

업데이트

마인크래프트 자바 에디션 스냅샷 24w18a

학교가기싫다

2024-05-06

0

/files/thumbnails/855/781/003/262x150.crop.jpg?20240505141129

레드스톤

레이저 클리너

GlassesFilm

2024-05-05

1

/files/thumbnails/576/775/003/262x150.crop.jpg?20240426232553

아티클

이달의 블록: 단단한 진흙

학교가기싫다

2024-04-26

0

/files/thumbnails/115/774/003/262x150.crop.jpg?20240428135129

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0