본문 바로가기
프로그래밍 공부흔적/Kotlin

[부스트코스][Kotlin]표준함수 활용(3) - 람다식 검사, 시간측정, 난수생성 함수

by 뷕뺙쀡 2021. 1. 29.

부스트코스 서포터즈 3기 활동으로서
코틀린 프로그래밍 기본 1/2(함수편)을 듣고 작성된 포스팅입니다


표준함수 활용(3)

1) 람다식 검사 - takeIf()과 takeUnless()

// takeIf()과 takeUnless() 표준 함수의 정의
public inline fun <T> T.takeIf(predicate: (T) -> Boolean): T?
  = if (predicate(this)) this else null  
public inline fun <T> T.takeUnless(predicate: (T) -> Boolean): T?
  = if (!predicate(this)) this else null

takeIf() : 람다식이 true이면 객체 T를 반환하고 그렇지 않은 경우 null 반환
takeUnless() : 람다식이 false이면 객체 T를 반환하고 그렇지 않은 경우 null 반환

2) 시간 측정

// 코틀린 system 패키지의 Timing.kt 파일
// 시간 측정 표준 함수 measureTimeMillis() measureNanoTime()
public inline fun measureTimeMillis(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
}

measureTimeMillis() : block을 실행하는데 소요된 시간을 밀리초 단위, long 형식으로 반환
measureNanoTime() :
block을 실행하는데 소요된 시간을 나노초 단위, long 형식으로 반환

import kotlin.system.measureTimeMillis
import kotlin.system.measureNanoTime

fun main(){
    val executionTime = measureTimeMillis {
        var sum=0
        for (i in 1..100000) sum*=i
    }
    val executionTime2 = measureNanoTime {
        var sum=0
        for (i in 1..100000) sum*=i
    }

    println("Execution Time = $executionTime ms")
    println("Execution Time = $executionTime2 ")
}

3) 난수 생성

import kotlin.random.Random
fun main(){
    val number = Random.nextInt(100)  //숫자는 난수 발생 범위
    println(number) //0~99까지의 숫자 출력
}

www.boostcourse.org/mo132

 

코틀린 프로그래밍 기본1/2(함수편)

부스트코스 무료 강의

www.boostcourse.org

 

댓글