KOTLIN

코틀린(Kotlin) 조건문 if & when

사과씨앗 2020. 12. 26. 19:20
728x90
반응형

안녕하세요 이번 글에서는 코틀린에서 조건문을 사용하는 방법을 알아보겠습니다.

 

코틀린에서는 if와 when 두 가지 조건문이 있습니다. 

 

1. IF

 

java나 다른 언어를 공부하신 분들이라면 기본적으로 if문을 사용하는지 알고 있으실 거라 생각합니다.

fun main(){
    Practice_1()
}

fun Practice_1(){
    var a:Int = 1
    var b:Int = 2
  if(a > b){
        print("a는 b보다 크다")
  }else{
        print("a는 b보다 작다")
  }
}

이런 식으로 코딩한 다음 실행시켜 보면

위처럼 프린트되는 것을 확인할 수 있습니다.

 

만약 조건문을 통해서 값을 변수에 대입하려면

fun Practice_1(){
    var a:Int = 1
    var b:Int = 2
    var c:Int;
  if(a > b){
      c = a
  }else{
      c = b  
  }
}

이런 식으로 조건문 블록 내부에서 값을 대입하며 사용합니다.

 

하지만 코틀린에서는 더욱 간결하게 이 부분을 처리할 수 있습니다.

fun main(){
    Practice_1()
}

fun Practice_1(){
    var a:Int = 1
    var b:Int = 2
    var c:Int = if(a < b) a else b

    print("c : $c")
}

이런 식으로 변수의 값을 대입하는 부분에 조건문을 선언하여 사용하여도 정상적으로 값을 대입할 수 있습니다.

 

 

위처럼 조건문을 사용할 시 조건문의 코드 블록 { }을 사용하려면 블록의 마지막 줄에 반환되는 값을 선언하여 사용합니다.

fun main(){
    Practice_1()
}

fun Practice_1(){
    var a:Int = 1
    var b:Int = 2
    var d:Int = 3
    var c:Int = if(a < b){
        a = a+d
        a  // <- 코드블럭 마지막 줄에 선언한 값이 리턴되어 변수에 대입된다.
    } else{
        b = b+d
        b  // <- 코드블럭 마지막 줄에 선언한 값이 리턴되어 변수에 대입된다.
    }
    print("c : $c")
}

 

2. WHEN

 

다음은 when 조건문을 알아보겠습니다. when조건문 같은 경우는 자바의 swich case 조건문을 생각하시면 쉽게 접근할 수 있습니다.

 

fun Practice_2(){

    var a:Int = 3

    when(a){
        1 -> { print("this is 1") }
        2 -> { print("this is 2") }
        3 -> { print("this is 3") }
    }
}

 

가장 간단한 방법으로 위 코드처럼 when 조건문에 파라미터를 받고 그 파라미터의 값을 비교하여 원하는 로직을 { } 넣어서 실행시켜 줍니다.

 

fun Practice_2(){

    var a:Int = 6

    when(a){
        1,4 -> { print("this is 1 or 4") }
        2,5 -> { print("this is 2 or 5")  }
        3,6 -> { print("this is 3 or 6") }
    }
}

위 코드처럼 조건문에 , 를 넣어주면 or 역할을 하여 1 또는 4 , 2 또는 5 , 3 또는 6이라는 조건이 만들어집니다.

 

fun Practice_2(){

    var a:Int = 23

    when(a){
        in 1..10  -> { print("this is 1 to 10") }
        in 11..20 -> { print("this is 11 to 20") }
        in 21..30 -> { print("this is 21 to 30") }
    }
}

in을 사용하여 원하는 범위를 지정하여 사용할 수도 있습니다. in을 사용한 범위는 <= , >= 로 이해하시면 됩니다.

 

fun Practice_2(){

    var a:Int = 23

    when{
        a > 22 -> { print("small") }
        a > 23 -> { print("equals") }
        a > 24 -> { print("large") }
    }
}

when 조건문의 파라미터 없이도 사용이 가능합니다.

 

fun Practice_2(){

    var a:Int = 24
    var c:String = "String"
    var d:Double = 32.3
    var f = true

    var e:Any = when{
        a < 22 -> { a }
        c == "str" -> { c }
        d == 3.23 -> { d }
        else -> { false }
    }
    print("e : $e")
}

d위 코드처럼 if 문에서 변숫값에 바로 대입하는 것처럼 when 문도 변숫값에 바로 대입이 가능하고 다양한 타입으로 사용할 수도 있습니다. 

 

※ 주의할 점! : 코틀린에서는 기본적으로 NotNull이 원칙이기 때문에 위 코드처럼 값을 리턴하는 경우 반드시 마지막에 else를 선언하여 주어야 합니다. 

 

감사합니다 ^^

728x90
반응형