일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 안드로이드스튜디오
- Error:Execution failed for task ':app:mergeDebugResources'
- Android
- 코딜리티
- 코틀린
- espresso
- LayoutManger
- 안드로이드
- 안드로이드개발레벨업교과서
- high order function
- Fragment에서 Activity의 함수 사용하기
- searchview
- viewholder
- recyclerview
- fragment
- 테마 아이콘
- 고차함수
- binding adapter
- ui test
- IntentTestRule
- adapter
- 리사이클러뷰
- 재사용
- 안드로이드13
- 뷰변경 감지
- ActivityTestRule
- Fragment 수동 추가
- 구분선
- 스와이프
- 생명주기
Archives
- Today
- Total
룬아님의 취중코딩
(Kotlin) Singleton, enum, Sealed Class 본문
1. Singleton
object GoldColor : FishColor {
override val color = "gold"
}
2. enum
enum class Direction(val degrees: Int) {
NORTH(0), SOUTH(180), EAST(90), WEST(270)
}
fun main() {
println(Direction.EAST.name)
println(Direction.EAST.ordinal)
println(Direction.EAST.degrees)
}
⇒ EAST
2
90
3. Sealed
sealed class Seal
class SeaLion : Seal()
class Walrus : Seal()
fun matchSeal(seal: Seal): String {
return when(seal) {
is Walrus -> "walrus"
is SeaLion -> "sea lion"
}
}
Sealed 클래스는 보기에는 inner class랑 비슷하지만 when 표현식을 쉽게 사용할 수 있는 이점이 있다.
Google blueprint에서는 Sealed 클래스를
sealed class Result<out R> {
data class Success<out T>(val data: T) : Result<T>()
data class Error(val exception: Exception) : Result<Nothing>()
object Loading : Result<Nothing>()
override fun toString(): String {
return when (this) {
is Success<*> -> "Success[data=$data]"
is Error -> "Error[exception=$exception]"
Loading -> "Loading"
}
}
}
suspend fun searchRepositories(searchKeyWord: String): Result<RepositoriesResponse> =
withContext(ioDispatcher) {
return@withContext try {
Success(gitHubAPI.searchRepositories(searchKeyWord))
} catch (e: Exception) {
Error(e)
}
}
이렇게 비동기 작업의 Return으로 사용하도록 구현하였다.
위 코드를 통해 간단하게 Sealed 클래스를 이용하여 when 표현식으로 어떻게 활용하는지를 알 수 있다.
반응형
'개발 > Kotlin' 카테고리의 다른 글
List size 정하고 초기화하는 방법 (0) | 2020.02.03 |
---|---|
(Kotlin) const와 val의 차이점 (0) | 2019.12.17 |
Kotlin Bootcamp for Programmers 9. 클래스 (0) | 2019.11.18 |
class와 data class의 차이 (0) | 2019.11.13 |
(Kotlin) 함수를 인자로 넘겨서 실행 (0) | 2019.10.16 |
Comments