philaphillip

코틀린 조건문 (if ~ else, when) 제대로 알고 가기 본문

프로그래밍/코틀린

코틀린 조건문 (if ~ else, when) 제대로 알고 가기

잡식블로그 2023. 4. 6. 20:41
반응형

조건문에서 자바와 코틀린의 큰 차이점은 자바에서(statement)였던 조건문이 코틀린에서는 조건식인(expression)이다.

expression 즉, 식이라는 것은 말 그대로 return값을 가지고 있을 수 있다

statement는 말 그대로 구문이다 그래서 그 코드 조각을 실행하는 하나의 문장들이라고 보면 된다

fun main(){
    max(10, 3)
}

fun max(a : Int, b: Int){
    val result = if (a > b){
        println(a)
    } else {
        println(b)
    }
}

여기 이 코드에서 

이 만큼이 값이 될 수 있다

실제로 이만큼이 값이라고 보면 return값을 Unit으로 보면 된다

왜냐하면 println해서는 return값이 없으니까

println(b)

그러니까 요값도 Unit이겠죠

 

요렇게 해서 뱉은 result값은 바로 Unit이다

 

fun max(a : Int, b: Int){
    val result = if (a > b) a else b
    println(result)

//    val result = if (a > b){
//        println(a)
//    } else {
//        println(b)
//    }
//    println(result)

    val result = if (a > b){
        a
    } else {
        b
    }
    println(result)
}

자바에는 있는 삼항연산자가 코틀린에는 없음

하지만 이런식의 응용이 가능함

fun max(a: Int, b: Int){
	val result = if (a > b) a else b
    println(result)
}

 

자바에서는 switch를 사용하지만 코틀린에서는 when을 사용한다

만약 주고 싶은값이 월, 화, 수, 목 ...이라면

fun year(week: String) {
        when (week) {
        	"월" -> false
            "화" -> false
            "수" -> false
            "목" -> false
            "금" -> false
            "토" -> true
            "일" -> true
        }
   }

중복되는 값을 ”,”로 대체할 수 있다

fun year(week: String) {
    when (week) {
        "토",
        "일" -> true
     	"월",
        "화",
        "수",
        "목",
        "금" -> false
    }
}

 

조금 더 간단하게 하면

fun year(week: String) {
    when (week) {
        "토",
        "일" -> true
        else -> false
    }
}

요것도 expression이라서 값을 뱉고 싶다면

fun year(week: String) {
    val result = when (week) {
        "토",
        "일" -> true
        else -> false
    }
    println(result)
}

 

 

만약에 값이 여러개인 캐이스에서 해당 처리를 할 때

다시 이 값이 필요한 경우

fun year(week: String) {
    val result = when (val day = week) {
        "토",
        "일" -> true
        else -> false
    }
    println(result)
}

이렇게 처리를 해주는 케이스도 있다

만약 day로 값을 받아서 사용했다면

fun year(week: String) {
    when (val day = week) {
        "토",
        "일" -> if (day == "토") "nice" else "nice!!"
        else -> "힘들어"
    }
    println(result)
}

이런 식으로의 응용도 가능하다.

반응형
Comments