반응형
오늘은 Kotlin 에서 값의 범위를 강제할 수 있는,
coerceIn, coerceAtMost 그리고 coerceAtLeast 에 대해서 정리해 보겠습니다.
1. CoerceIn
원래 Coerce 라는 단어는 강제로 무언가를 하게 한다는 의미인데요.
CoerceIn 은 강제로 어느 범위로 넣게 하겠다는 것 입니다.
인자로 최소값과 최대값을 받는데요.
이 최소값보다 적게나오면, 최소값을,
최대값보다 크게나오면, 최대값을 리턴하도록 강제해주는 API 입니다.
예를 들어서 아래 코드와 같은 경우를 들 수 있습니다.
아래는 Percent 값을 구하는데,
distance나 distanceBetween 이 마이너스가 나올 경우에도,
0과 1 사이에서만 값을 주도록 강제해 주었습니다.
val distanceInPercent = (distance / distanceBetween).coerceIn(0f, 1f)
2. coerceAtLeast 와 coerceAtMost
마찬가지로 값을 강제하는 API 들인데요.
coerceIn 이 범위를 강제하였다면,
coerceAtLeast 는 최소값을 강제하고,
coerceAtMost 는 최대값을 강제합니다.
3이라는 숫자에,
coerceAtLeast(8)을 실행시키면, 최소값이 8이 되므로 결과는 8 입니다.
coerceAtMost(8)을 실행시키면, 최대값은 8이 되므로 결과는 그대로 3이 됩니다.
val value = 3
val coercedLeastValue = value.coerceAtLeast(8) // 결과: 8
val coercedMostValue = value.coerceAtMost(8) // 결과: 3
아래와 같이 먼저 특정 값을 구한 후,
다음 값을 계산할 때 그 값을 바탕으로 최대값이 지정되도록 할 수 있습니다.
val distanceBetweenAB = distanceBetween(placeA, placeB)
val distanceBetweenAC = distanceBetween(placeA, placeC)
.coerceAtMost(distanceBetweenAB)
이상으로 값의 범위를 강제할 수 있는,
coerceIn, coerceAtMost 그리고 coerceAtLeast 에 대해 정리해 보았습니다.
728x90
'Android 개발 > Kotlin' 카테고리의 다른 글
ifEmpty 와 orEmpty 에 대해서 알아보자 # Kotlin (0) | 2023.05.30 |
---|---|
MapNotNull 과 MapNotNullTo 에 대한 정리 # null 제거 (0) | 2023.05.24 |
List 아이템 부분추출 함수 정리 # take, takeWhile, takeLast, drop, slice, first and last (0) | 2023.05.15 |
compareBy 와 min 그리고 sortedWith 사용방법에 대한 정리 (0) | 2023.05.10 |
any , contains, none , all, containsAll 에 대한 정리 # Kotlin list 존재여부 확인 (1) | 2023.05.06 |
Destructuring declaration 에 대해 알아보자 # 구조분해 선언 Kotlin (0) | 2023.05.01 |
Kotlin Escape 에 대한 정리 # RawString Escaped String Literal (0) | 2023.04.30 |
Kotlin GroupBy 구현과 정리 # List 그룹핑 (0) | 2023.04.28 |
getOrNull 과 getOrElse 에 대한 정리 # List Kotlin (0) | 2023.04.28 |
Kotlin Pair 와 Map 함수 이용해서 데이터 가공하기 (0) | 2023.04.26 |
댓글