개발새발/알고리즘

[Kotlin] 범위 지정 함수 - coerceIn, coerceAtMost, coerceAtLeast

조희우 2023. 8. 28. 19:48

🔷 범위 지정 함수란?

    Coerce는 '강제로 무언가를 하게 하다'라는 뜻이 있다.

    내포하는 단어의 뜻처럼 어떠한 범위를 강제로 지정하여 결과값을 도출하는 함수이다.

    범위 지정 함수는 "어떠한 영역을 지정하고 내부에서 작동하는 함수"이다.

    대표적으로 [ let, with, run, apply, also] 함수가 있다.

    * 추가 포스팅 예정


🔷 coerceIn

🔹구조

    객체가 해당 범위에 있을 경우 해당 값을, 존재하지 않을 경우 경계값(범위의 최소값 혹은 최대값)을 반환

(객체).corerceIn(범위)

    - 객체로 확인할 값을 지정한다.

    - 메소드를 적용한다. : coerceIn()

    - 메소드의 인자값으로 범위를 지정한다. :  coerceIn(a..b) / coerceIn(a, b) *a는 범위 내 최소값, b는 범위 내 최대값 

🔹코드

val range = 3..7

// 범위 내 존재, 해당 값 리턴
4.coerceIn(range) // 4
4.coreceIn(3,6) //4

// 범위 외 존재, 경계값 리턴
1.coerceIn(range) // 3
9.coerceIn(range) //8

🔷 coerceAtMost

🔹구조

    객체가 인자값보다 작을 경우 객체를, 아닐 경우 최소 객체를 반환

(객체).coerceAtMost(인자값)

    - 객체로 확인할 값을 지정한다.

    - 메소드를 적용한다. : coerceAtMost()

    - 메소드의 인자값으로 비교할 값을 지정한다.

🔹코드

val value = 5

// 객체가 작을 경우
value.coerceAtMost(2) // 2

// 인자가 작을 경우
value.coerceAtMost(8) // 5

🔷 coerceAtLeast

🔹구조

    객체가 인자값보다 클 경우 객체를, 아닐 경우 최대 객체를 반환

(객체).corerceAtLeast(인자값)

    - 객체로 확인할 값을 지정한다.

    - 메소드를 적용한다. : coerceAtLeast()

    - 메소드의 인자값으로 비교할 값을 지정한다.

🔹코드

val value = 5

// 객체가 클 경우
value.coerceAtLeast(8) // 8

// 인자가 클 경우
value.coerceAtLeast(2) // 5

🔷 coerceAtMost , Min / coerceAtLeast , Max

    최대값 갱신을 위해서 보통 최대값 = Math.Max( 최댓값, 숫자2)를 사용한다.

    코틀린에서는 Int 의 확장함수인 coreceAtLeast()를 사용하여 최댓값.corceAtLeast(숫자) 로 가능하다.