부스트코스 서포터즈 3기
[부스트코스] 자주 사용되는 기타 표준 함수 (람다식 검사, 시간 측정, 난수 생성)
YERIEL
2021. 2. 9. 10:08
이 포스트는 부스트코스 서포터즈 3기 활동을 기반으로 정리된 글입니다.
takeIf(), takeUnless()
- takeIf() 함수 : 람다식이 true이면 객체 T를 반환하고 그렇지 않은 경우 null 반환
- takeUnless() 함수 : 람다식이 false이면 객체 T를 반환하고 그렇지 않은 경우 null 반환
public inline fun <T> T.takeIf(predicate: (T) -> Boolean): T? = if (predicate(this)) this else null
!=, ==, ?. 등으로 true, false를 체크하는 것을 takeIf(), takeUnless() 함수를 사용하여 간단하게 식을 표현할 수 있음
- takeIf(), takeUnless() + 엘비스 연산자(?:) : null일 경우 엘비스 연산자 오른쪽 식을 표현함으로써 null이 반환되었음을 표현할 수 있음
시간의 측정 : kotlin.system 패키지에 있는 두 개의 측정 함수 measureTimeMillis(), measureNanoTime()
- 선언부는 다음과 같이 이루어져 있다.
public inline fun measureTimeMillies(block: () -> Unit): Long {
val start = System.currentTimeMillis()
block()
return System.currentTimeMillis() - start
}
public inline fun measureNanoTime(block: () -> Unit): Long {
val start = System.nanoTime()
block()
return System.nanoTime() - start
}
시간을 측정하고자 하는 코드를 시간 측정 함수의 인자로 보낸다.
- 시간 측정 사용 방법
val executionTime = measureTimeMillis {
// 측정할 작업 코드
}
println("Execution Time = $executionTime ms")
난수 생성하기 : kotlin.random.Random
- 자바의 java.util.Random을 이용할 수도 있었지만 JVM에만 특화된 난수를 생성하기 때문에 코틀린에서는 멀티플랫폼에서도 사용 가능한 kotlin.random.Random 제공
- 0부터 21 사이의 난수 제공 예시
import kotlin.random.Random
...
val number = Random.nextInt(21) // 숫자는 난수 발생 범위
println(number)