Android 개발/Kotlin
CoerceIn, coerceAtMost, coerceAtLeast 범위지정 함수에 대한 정리 # Kotlin
Developer88
2023. 5. 26. 00:01
반응형
오늘은 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