[코틀린기초] 16. 자주 사용되는 표준함수들
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
someObject?.takeIf{it.status}?.apply{ doThis() }
val input = "Kotlin"
val keyword = "in"
//입력 문자열에 키워드가 있으면 인덱스를 반환하는 함수
input.indexOf(keyword).takeIf{it >= 0} ?: error("keyword not found")
input.indexOf(keyword).takeUnless{it < 0} ?: error("keyword not found")
시간의 측정
kotlin.system 패키지에 있는 두 개의 측정 함수
measureTimeMillis() measureNanoTime()
선언부
// 선언부
public inline fun measureTimeMillis(block: () -> Unit) Long{
val start = System.currentTimeMillis()
block()
return System.currentTimeMillis() - start
}
사용법
val executionTime = measureTimeMillis{
//측정할 작업 코드
}
println("Execution Time = $executionTime ms")
난수 생성하기
자바의 java.util.Random을 이용할 수도 있지만 JVM에만 특화된 난수를 생성하기 때문에
코틀린에서는 멀티플랫폼에서도 사용 가능한 kotlin.random.Random을 제공한다
import kotlin.random.Random
val number = Random.nextInt(21)