Kotlin에서 조건문을 다루는 방법

김민우·2023년 5월 21일
1

kotlin

목록 보기
6/6
post-thumbnail

본 글은 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
을 보고 정리한 글입니다.


1. if문

Java와 달리, Exception을 던질 때 new를 사용하지 않고 예외를 던진다.

// Java Code
private void validateScoreIsNotNegative(int score) {
	if (score < 0) {
    	throw new IllegalArgumentException("0보다 작을 수 없습니다!")
	}
 }
// Kotlin Code
fun validateScoreIsNotNegative(score: Int) {
	if (score < 0) {
    	throw IllegalArgumentException("0보다 작을 수 없습니다!")
	}
 }

Java에서 if-else는 Statement이지만, Kotlin에서는 Expression이다.

  • Statement: 프로그램의 문장, 하나의 값으로 도출 불가
  • Expression: 하나의 값으로 도출되는 문장
// Kotlin Code
fun getPassOrFail(score: Int): String {
	return if (score >= 50) {
    	"P"
    } else {
    	"F"
    }
 }

Kotlin에서는, if부터 else 전체를 한 번에 return 가능하다. if-else는 Expression이기 때문이다. (3항 연산자가 없다.)


2. 어떠한 값이 특정 범위에 포함되어 있는지, 포함되어 있지 않는지 파악하는 방법

in 시작..끝 을 사용하여 특정 범위에 포함되어 있는 지를 파악 가능하다.

// Kotlin Code
fun validate(score: Int) {
	if(score !in 0..100) {
    	throw IllegalArgumentException("score가 0~100 범위를 벗어납니다!")
    }
 }

3. switch와 when

Kotlin에서는 switch case문을 when으로 변환 가능하다.

switch(입력변수) {
    case 입력값1: ...
         break;
    case 입력값2: ...
         break;
    ...
    default: ...
         break;
}
when () {
	조건부 -> 어떠한 구문
    조건부 -> 어떠한 구문
    else -> 어떠한 구문
    }
  • Java의 switch문을 when으로 대체 가능하다. 조건부에는 어떠한 expression을 사용 가능하다.

fun getGradeSwitch(score: Int): String {
	return when (score / 10) {
    9 -> "A"
    8 -> "B"
    7 -> "C"
    else -> "D"
    }
}

when은 Expression이기 때문에, return으로 반환 가능하며, 바로 숫자를 판별하여 반환 가능하다.

fun getGradeSwitch(score: Int): String {
	return when (score / 10) {
    in 90..99-> "A"
    in 80..89 -> "B"
    in 70..79 -> "C"
    else -> "D"
    }
}

in 숫자..숫자범위를 활용하여, 다양한 분기를 칠 수 있다.

fun startsWithA(obj: Any): Boolean {
	return when (obj) {
    is String -> obj.startswith("A")
    else -> false
    }
}

Java에서의 if, InstanceOf 대신, when을 써서 obj가 어떠한 형인지 파악 가능하다.

fun judgeNumber2(number: Int) {
	when {
    number == 0 -> println("0")
    number % 2 == 0 -> println("짝수")
    else -> println("다른 숫자")
    }
 }

여러 조건문도 쉽게 조사할 수 있다.

profile
Backend Developer

0개의 댓글