본문 바로가기

프로그래밍언어/Kotlin

[Kotlin] 튜토리얼 따라가기 (2) (Control flow)

반응형

1. Control flow

- Conditional expressions

코틀린은 if when 을 이용한 조건문 기능을 제공한다.

1) if

val d: Int
val check = true

if (check) {
    d = 1
} else {
    d = 2
}

println(d)
// 1

 

() 괄호 안의 조건과 그에 따른 행동을 {} 괄호 안에 작성한다. 조건문은 if - else 를 이용하여 구성한다.

 

val a = 1
val b = 2

println(if (a > b) a else b) // Returns a value: 2

 

코틀린은 삼항 연산자 'condition ? then : else' 를 제공하지 않는다. 대신 위의 예제와 같이 {} 괄호를 생략하고 한 줄로 조건문을 작성할 수 있다.

2) when

val obj = "Hello"

when (obj) {
    // Checks whether obj equals to "1"
    "1" -> println("One")

    // Checks whether obj equals to "Hello"
    "Hello" -> println("Greeting")

    // Default statement
    else -> println("Unknown")    
}
// Greeting

 

when 은 다른 언어의 switch 문과 같이 조건에 따라 여러 분기로 나눠지는 조건문에 대한 문법이다. 위의 예제에서는 obj 의 값이 "1", "Hello", 그 외의 값인지에 따라 서로 다른 구문을 실행한다.

 

val temp = 18

val description = when {
    // If temp < 0 is true, sets description to "very cold"
    temp < 0 -> "very cold"
    // If temp < 10 is true, sets description to "a bit cold"
    temp < 10 -> "a bit cold"
    // If temp < 20 is true, sets description to "warm"
    temp < 20 -> "warm"
    // Sets description to "hot" if no previous condition is satisfied
    else -> "hot"            
}
println(description)
// warm

 

when 문은 조건의 결과로 특정 값을 반환하도록 구현하는 것도 가능하다. 위의 예제에서는 when 문 내부의 결과를 반환하여 변수 description 에 저장하고 있다. 또한 특정 변수의 값에 따라서 분기를 나누는 것 뿐만 아니라 위의 예제와 같이 boolean 문을 이용해 분기를 나누는 것도 가능하다.

- Ranges

코틀린에서 숫자나 문자의 범위를 나타낼 때 '..', downTo 등과 같은 연산자를 사용한다. 이에 대한 예제는 다음과 같다.

 

1..4 // 1, 2, 3, 4
1..<4 // 1, 2, 3
4downTo1 // 4, 3, 2, 1
1..5step2 // 1, 3, 5
'a'..'d' // 'a', 'b', 'c', 'd'
'z'downTo's'step2 // 'z', 'x', 'v', 't'

- Loops

1) For

for (number in 1..5) {
    // number is the iterator and 1..5 is the range
    print(number)
}
// 12345

 

in 연산자를 통해 range 또는 collection 의 요소들을 하나씩 반복하며 반복문을 수행한다.

2) While

while 문은 while, do-while 두가지로 사용할 수 있다.

 

var cakesEaten = 0
var cakesBaked = 0

while (cakesEaten < 3) {
    println("Eat a cake")
    cakesEaten++
}

do {
    println("Bake a cake")
    cakesBaked++
} while (cakesBaked < cakesEaten)
// Eat a cake
// Eat a cake
// Eat a cake
// Bake a cake
// Bake a cake
// Bake a cake

 

[Reference]

- https://kotlinlang.org/docs/kotlin-tour-control-flow.html

 

Control flow | Kotlin

 

kotlinlang.org

 

반응형