본문 바로가기
프로그래밍/코틀린

K004. 코틀린 제어흐름, 함수 한눈에 정리

by K-인사이터 2024. 2. 1.
반응형

안녕하세요

K-IN 입니다.

 

코틀린에 대해서 알아보겠습니다. 

전체 강의 목록은 아래의 링크를 클릭해주세요.

 

K000. 코틀린 시리즈 (연재물)

안녕하세요 K-IN 입니다. 요즘 코틀린을 이용한 개발 프로젝트가 늘어나고 있습니다. 이에, 코틀린에 대해서 상세하게 정리하는 간행물을 제작하고자 합니다. 여기에 있는 링크들은 모두 코틀린

k-in.tistory.com

 

 

코틀린 제어 흐름 

코틀린에서 제공하는 제어 흐름 구조는 아래와 같습니다. 

  • if 표현식: 표현식이 true 인 경우 코드 블록을 실행합니다. 
  • if-else 표현식: 표현식이 true 또는 false 에 따라 두 코드 블록 중 하나를 실행합니다. 
  • when 표현식: 표현식을 평가하고 표현식 값에 따라 여러 코드 블록 중 하나를 실행합니다.
  • for 루프: 코드 블록을 고정된 횟수만큼 실행합니다.
  • while 루프: 조건이 충족될 때까지 코드 블록을 여러 번 실행합니다. 
  • do-while 루프: while 루프와 동일합니다. 차이점은 do-while 루프는 코드 블록을 최소 1회 실행합니다. 

if, if-else, when 은 모두 조건절의 표현식을 평가하여 결과를 출력하는 역할을합니다. 아래는 bigger 라는 함수를 통해 두 정수 중 큰 수를 반환하는 코드 샘플입니다. 

  • if-else 표현식 예제를 보면 return 구문의 위치가 bigger02, bigger03 이 서로 다른것을 알수 있습니다. 코틀린에서 문법적으로 허용하는 구현이며 return 을 반복할 필요가 없습니다. 

코드를 보려면 펼치세요.

더보기
/**
 * if 표현식을 사용한 함수
 */
fun bigger01(a: Int, b: Int): Int {
    if (a > b) {
        return a
    }
    return b
}

/**
 * if-else 표현식을 사용한 함수
 */
fun bigger02(a: Int, b: Int): Int {
    if (a > b) {
        return a
    } else {
        return b
    }
}

/**
 * if-else 표현식에서 return 구문의 배치 변형
 * bigger02 와 동일하게 동작
 */
fun bigger03(a: Int, b: Int): Int {
    return if (a > b) {
        a
    } else {
        b
    }
}

/**
 * when 표현식을 사용한 함수
 */
fun bigger04(a: Int, b: Int): Int {
   when {
       a > b -> return a
       a < b -> return b
       else -> return -1
   }
}

fun main() {
    val a: Int = 3
    val b: Int = 4
    var c: Int = bigger01(a, b)
    println("큰 값은 : $c")

    c = bigger02(a, b)
    println("큰 값은 : $c")

    c = bigger03(a, b)
    println("큰 값은 : $c")
    
    c = bigger04(a, b)
    println("큰 값은 : $c")
}

코틀린 함수

함수란 파라미터(매개변수)를 입력 받아 실행하는 코드 블록입니다. fun 키워드를 통해서 선언할 수 있습니다. 

코틀린은 함수 선언 시 매개변수의 타입과 리턴 타입을 명시해야합니다. 

fun bigger01(a: Int, b: Int): Int {
    if (a > b) {
        return a
    }
    return b
}

 

그러나, 함수 중에는 어떠한 값도 리턴하지 않는 함수가 있습니다.

이때는 Unit 이라는 키워드를 통해 값을 반환하지 않는 함수인 것을 선언해주어야 합니다. 

다만, 코틀린은 반환하는 타입을 지정하지 않을 경우 자동으로 Unit 타입으로 추론합니다. 

하지만 코드 가독성 측면에서는 반환 타입을 지정하는것이 좋습니다. 

 

 

fun noReturnFun() {
    println("No Return")
}

fun noReturnFun02() : Unit {
    println("No Return 02")
}

fun main() {
    noReturnFun()
    noReturnFun02()
}

 

코틀린은 함수를 인자로 받을 수 있습니다. 

fun sampleFunction(): Unit {
    println("나는 함수입니다.")
}

fun execFunction(a: Int, f: () -> Unit) {
    f()
}

fun main() {
    val a: Int = 3
    execFunction (a) { sampleFunction() } 
    execFunction (a, { sampleFunction() }) // 위와 동일  
}

 

 

이상입니다.

K-IN 올림. 

반응형