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