개인 자료란 (JE)

  서버 커뮤니티

Profile muqhc 대표칭호 없음
Profile

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

활성 패턴 in Kotlin

2022.05.12 조회 수 1127 추천 수 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/288/791/003/262x150.crop.jpg?20240602150002

아티클

《까다로운 시련》 업데이트 날짜 공개 및 정보

학교가기싫다

2024-06-02

0

/files/thumbnails/841/773/003/262x150.crop.jpg?20240526120908

레드스톤

마인크래프트 노트블록버전 『 봄을 고하다 (春を告げる) 』 [더블옥타브 버전]

노트블럭전문가

2024-05-26

0

/files/thumbnails/712/796/003/262x150.crop.jpg?20240525085438

레드스톤

마인크래프트 노트블록으로 만든 『 봄을 고하다 (春を告げる) 』 1

Sonttukk

2024-05-25

0

/files/thumbnails/268/789/003/262x150.crop.jpg?20240515192032

레드스톤

벌레먹은 돌 빠르게 제거하는 법

GlassesFilm

2024-05-15

0

/files/thumbnails/797/788/003/262x150.crop.jpg?20240515090924

건축

마인크래프트로 구현한 카르카손 보드게임

Warak

2024-05-15

2