본문 바로가기
개발&프로그래밍

[Kotlin] 조건문과 반복문

by 재아군 2024. 8. 11.

Kotlin의 조건문과 반복문

Kotlin은 다양한 조건문과 반복문을 제공하여 프로그래머가 효율적이고 읽기 쉬운 코드를 작성할 수 있게 합니다. 이 가이드에서는 Kotlin의 주요 제어 흐름 구조를 살펴보고, 각각의 사용법과 특징을 자세히 알아보겠습니다.

 

 


If 표현식 (If expression)

Kotlin에서 if는 표현식입니다. 이는 값을 반환한다는 의미로, 다른 언어의 삼항 연산자(조건 ? 참 : 거짓)를 대체할 수 있습니다.

var max = a
if (a < b) max = b

// else와 함께 사용
if (a > b) {
    max = a
} else {
    max = b
}

// 표현식으로 사용
max = if (a > b) a else b

// else if도 표현식에서 사용 가능
val maxLimit = 1
val maxOrLimit = if (maxLimit > a) maxLimit else if (a > b) a else b

 

 

 

if 표현식의 각 분기는 블록이 될 수 있으며, 이 경우 블록의 마지막 표현식이 해당 분기의 값이 됩니다:

 

val max = if (a > b) {
    println("a 선택")
    a
} else {
    println("b 선택")
    b
}

 

주의할 점은 if를 표현식으로 사용할 때 (예: 값을 반환하거나 변수에 할당할 때), else 분기가 필수라는 것입니다.

 

 

When 표현식 (When expression)

when은 여러 분기를 가진 조건 표현식을 정의합니다. C 계열 언어의 switch 문과 유사하지만, 더 강력하고 유연합니다.

when (x) {
    1 -> println("x == 1")
    2 -> println("x == 2")
    else -> {
        println("x는 1도 2도 아님")
    }
}

 

 

when은 표현식이나 문장으로 사용될 수 있습니다. 표현식으로 사용될 때, 첫 번째로 매치되는 분기의 값이 전체 표현식의 값이 됩니다.

enum class Bit {
    ZERO, ONE
}

val numericValue = when (getRandomBit()) {
    Bit.ZERO -> 0
    Bit.ONE -> 1
    // 모든 경우가 처리되었으므로 'else'가 필요 없음
}

 

 

여러 case를 한 줄에 표현할 수도 있습니다:

when (x) {
    0, 1 -> println("x == 0 또는 x == 1")
    else -> println("그 외")
}

 

 

when의 조건에는 상수뿐만 아니라 임의의 표현식을 사용할 수 있습니다:

when (x) {
    s.toInt() -> println("s는 x를 인코딩함")
    else -> println("s는 x를 인코딩하지 않음")
}

 

 

 

범위나 컬렉션에 대한 in 또는 !in 검사도 가능합니다:

when (x) {
    in 1..10 -> println("x는 범위 내에 있음")
    in validNumbers -> println("x는 유효함")
    !in 10..20 -> println("x는 범위 밖에 있음")
    else -> println("위의 경우가 모두 아님")
}

 

 

 

is 또는 !is를 사용한 타입 검사도 가능합니다:

fun hasPrefix(x: Any) = when(x) {
    is String -> x.startsWith("prefix")
    else -> false
}

 

 

 

whenif-else if 체인을 대체할 수 있습니다:

when {
    x.isOdd() -> println("x는 홀수")
    y.isEven() -> println("y는 짝수")
    else -> println("x+y는 홀수")
}

 

 

For 루프 (For loops)

Kotlin의 for 루프는 이터레이터를 제공하는 모든 것을 반복할 수 있습니다.

for (item in collection) println(item)

// 블록 사용
for (item: Int in ints) {
    // ...
}

 

 

범위에 대한 반복도 가능합니다:

for (i in 1..3) {
    println(i)
}

for (i in 6 downTo 0 step 2) {
    println(i)
}

 

 

배열이나 리스트를 인덱스와 함께 반복하려면 다음과 같이 할 수 있습니다:

for (i in array.indices) {
    println(array[i])
}

// 또는 withIndex() 함수 사용
for ((index, value) in array.withIndex()) {
    println("$index 위치의 요소는 $value")
}

 

 

While 루프 (While loops)

Kotlin은 whiledo-while 루프를 제공합니다.

while (x > 0) {
    x--
}

do {
    val y = retrieveData()
} while (y != null) // y는 여기서도 사용 가능!

while은 조건을 먼저 검사하고 본문을 실행하지만, do-while은 본문을 최소한 한 번 실행한 후 조건을 검사합니다.

 

 

루프에서의 Break와 Continue (Break and continue in loops)

Kotlin은 루프에서 전통적인 breakcontinue 연산자를 지원합니다. 이에 대한 자세한 내용은 "Returns and jumps" 섹션을 참조하세요.

 

Kotlin의 조건문과 반복문은 다른 언어와 유사하면서도 더 강력하고 유연한 기능을 제공합니다. 특히 when 표현식의 다양한 사용법과 for 루프의 간결함은 Kotlin 코드를 더 읽기 쉽고 유지보수하기 쉽게 만듭니다. 이러한 기능들을 잘 활용하면 더 효율적이고 표현력 있는 코드를 작성할 수 있습니다.

 

 


Kotlin, 조건문, 반복문, If표현식, When표현식, For루프, While루프, 제어흐름, KotlinProgramming, 코틀린문법, 프로그래밍팁, 코드최적화, 안드로이드개발, 백엔드개발, KotlinCoroutines

댓글