본문 바로가기
Kotlin

[Kotlin] 코틀린 Control Flow

by 신입같은 3년차 2019. 6. 19.

이번 Control Flow는 Kotlin Document에 있는 예제들을 한글로 풀어서 설명 한 예제입니다 . 

 

If Expression


In Kotlin, if is an expression, i.e. it returns a value. Therefore there is no ternary operator (condition ? then : else), because ordinary if works fine in this role.

 

코틀린에서의 if 는 표현식이다 , 값을 반환합니다 . 삼중연산자가 필요없습니다 왜냐하면 보통 if 가 역할 수행을 잘하기때문이다 . 라는 의미입니다 .

 

다음 예제를 보겠습니다 . 다음 예제는 if 문이 식으로 사용되는 경우 값을 반환한다, 또한 if 식의 경우 else를 동반해야한다

fun main(args: Array<String>) {

    var a : Int = 5;
    var b :Int = 6;

    val max1 = if ( a > b) a else b
    println(max1)

    val max = if (a>b) {
        println(""" Choose a """)

    }else {
        println(""" Choose B""")

    }
    println(max)
}

//출력결과
6
Choose B
kotlin.Unit

다음 예제를 보면 kotlin.Unit를 볼수 있다 이유는 max변수에 값이 들어가야하는데 reuturn 해주는 값이 없기 떄문입니다 .

그렇다면 if 와 else 분기에 return a 와 return b 를 쓰면 해결될거 같지만 정답은 그냥 a 와 b 를 써주면 됩니다 

이유는 블로그이 마지막 구분이 반환값이 되기 때문입니다 . 따라서 완성된 소스는 아래와 같습니다 .

fun main(args: Array<String>) {

    var a : Int = 5;
    var b :Int = 6;

    val max1 = if ( a > b) a else b;
    println(max1);

    val max = if (a>b) {
        println(""" Choose a """);
        a;
    }else {
        println(""" Choose B""");
        b;
    }
    println(max)
}

 

 

 

When 


fun main(args: Array<String>) {

    val x : Int = 3;

    when (x) {
        1 -> println("x == 1");
        2 -> println("x == 2");
        3 -> println("x == 3")
        is Int -> println("정수입니다 ")
        else -> {
            println("숫자가 아닙니다!")
        }
    }
}

when 문은 switch문과 유사합니다 . 

when 은 각각의 조건이 만족할때까지 위에서부터 순차적으로 아래로 비교합니다 .

when 이 식으로 사용된경우 조건을 만족하는 값이 식의 결과값이 된다 . 

when 이 식으로 사용된경우에는 else가 필수이다. ( 모두 만족하지 않을경우 돌려줘야하는 기본 값이 필요하기 때문  )

when 이 식으로 사용된경우 컴파일러가 else문이 없어도 된다고 입증할 수 있다면 else 생략 가능 

 

fun main(args: Array<String>) {

    val myScore = 90;
    val hak = when(myScore) {
        in 90 .. 100 -> "A"
        in 80 until 90 -> "B"
        in 70 until 80 -> "C"
        else -> "F"
    }
    println(hak)


    val check = true;
    when (check) {
        true -> "정답";
        false -> "오답";
    }
}

위의 소스는 myScore에 대한 학점을 출력하고 , check값에 대한 값을 보여주는 when 에 대한 예제입니다 .

첫번째 myScore같은 경우는 else가 없으면 에러가 나지만 2번쨰 when같은 경우는 else문이 없어도 된다는 판단으로 else가 없어도 에러가 나지 않는다 .

 

※직접적으로 언급하지 않았지만 when에서 in 과 .. or in until을 통해 범위지정이 가능하다 . 

.. 은 우측의 값을 포함하지만 until은 우측의 값을 포함하지 않는다 . 

또한 여러개의 값을 넣어서 하나의 실행만 하고싶을때는 true , false 와 같이 콤마(,)로 구분지어서 사용하면됩니다.

혹여나 타입을 확인하고 싶다면 is , !is 를 사용하면 된다 ex) is Int 와 같은 방법으로 사용 가능.

 

 

For Loops 


fun main(args: Array<String>) {

    val items : Array<String> = arrayOf<String>( "바나나" , "사과" , "포도" , "키위");

    for (item in items){ println(item)}

    // index 를 이용하고 싶다면
    for (i in items.indices){ println("${i} : ${items[i]}")}

    // index와 value둘다 사용하고 싶다면
    for ((index , item) in items.withIndex()) { println("${index} : ${item}" )}
}

for 문은 코드로 보는게 빠를것 같습니다 . 

반응형

'Kotlin' 카테고리의 다른 글

[Kotlin] Data Classes  (0) 2019.06.19
[Kotlin] 상속  (0) 2019.06.19
[Kotlin] class 의 활용 및 개념  (0) 2019.06.19
[Kotlin] Package , Return and Jumps  (0) 2019.06.19
[Kotlin] 코틀린의 기본 타입 ( Java와의 비교 )  (0) 2019.06.19

댓글