Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • java
  • 에라토스테네스의 체
  • 프로그래머스
  • 프리코스
  • 코딩테스트
  • Android
  • 코틀린 인 액션
  • 문자열
  • rsocket
  • Docker
  • 레포지토리
  • kotlin
  • ec2
  • 우아한테크코스
  • webflux
  • spring
  • kibana
  • elasticsearch
  • SQL
  • MariaDB
  • 다이나믹 프로그래밍
  • 안드로이드
  • grafana
  • enum
  • til
  • 내림차순
  • 파이썬
  • Wil
  • 백준
  • 코틀린

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

Android/Kotlin

[Kotlin] enum, sealed class

2022. 9. 27. 21:08

enum class

- 같은 타입의 여러 상수 정의

- comma로 구분

enum class Color{
    RED,
    GREEN,
    BLUE
}

 

enum class + When expression

- else branch 없이도 모든 조건 평가

val colorCode = when(color){
    Color.RED -> "#FF0000"
    Color.GREEN -> "#00FF00"
    Color.BLUE -> "#0000FF"
}

1. 생성자, 프로퍼티 선언 가능

enum class Color(val rgb: Int){
    RED(0xFF0000),
    GREEN(0x00FF00),
    BLUE(0x0000FF)
}

2. 함수 선언 가능

enum class ProtocolState{
    WAITING{
        override fun signal() = TALKING
    },
    TALKING{
        override fun signal() = WAITING
    };
    abstract fun signal(): ProtocolState
}

 

sealed interface / class

1. 클래스 간 계층 정의

package: data

sealed interface Error

sealed class IOError(): Error

class FileReadError(val f: File): IOError()
class DatabaseError(val source: DataSource): IOError()

object RuntimeError : Error

2. sealed class의 subclass 제약사항

- 같은 패키지 내에서만 subclass 선언

package: screen

sealed class ResponseError(): Error // Error

3. with when expression

fun log(e: Error) = when(e){
    is FileReadError -> {...}
    is DatabaseError -> {...}
    RuntimeError -> {...}
}
728x90

'Android > Kotlin' 카테고리의 다른 글

[코틀린 인 액션] 3장 정리  (0) 2022.11.28
[코틀린 인 액션] 2장 정리  (0) 2022.11.24
[Kotlin] 고차 함수, 람다, Scope functions  (0) 2022.09.18
[Kotiln] Nested & inner class, Extension함수, Generics  (0) 2022.09.16
[Kotlin] object  (0) 2022.09.16
    'Android/Kotlin' 카테고리의 다른 글
    • [코틀린 인 액션] 3장 정리
    • [코틀린 인 액션] 2장 정리
    • [Kotlin] 고차 함수, 람다, Scope functions
    • [Kotiln] Nested & inner class, Extension함수, Generics
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바