-
5강. 코틀린에서 조건문을 다루는 방법BackEnd/Kotlin 2024. 2. 4. 08:30반응형
- if문
- Expression과 Statement
- switch와 when
if문
if / if-else / if-else if-else 모두 Java와 문법이 동일합니다. 다음은 Java와 Kotlin if문 코드입니다.
// Java private void validateScoreIsNotNegative(int score) { if (score < 0) { throw new IllegalArgumentException(String.format("%s는 0보다 작을 수 없습니다.", score)); } } // Kotlin fun validateScoreIsNotNegative(score: Int) { if (score < 0) { throw IllegalArgumentException("${score}는 0보다 작을 수 없습니다.") } }
Expression과 Statement
- Statement: 프로그램의 문장, 하나의 값으로 도출되지 않습니다.
- Expression: 하나의 값으로 도출되는 문장입니다.
다음은 Java와 Kotlin if ~ else문 코드입니다.
// Java private String getPassOrFail(int score) { if (score >= 50) { return "P"; } else { return "F"; } } // Kotlin fun getPassOrFail(score: Int): String { if (score >= 50) { return "P" } else { return "F" } }
역시 문법은 동일하지만, 한 가지 다른 점이 존재합니다. Java에서 if-else는 Statement이지만, Kotlin에서는 Expression 입니다. 위의 코드를 Expression으로 변경하면 다음과 같습니다.
- Kotlin에서는 if-else를 expression으로 사용할 수 있기 때문에 3항 연산자가 존재하지 않습니다.
// Java (3항 연산자) private String getPassOrFail(int score) { return score >= 50 ? "P" : "F"; } // Kotlin fun getPassOrFail(score: Int): String { return if (score >= 50) { "P" } else { "F" } }
if-else if-else 문법도 동일합니다.
// Java private String getGrade(int score) { if (score >= 90) { return "A"; } else if (score >= 80) { return "B"; } else { return "C"; } } // Kotlin fun getGrade(score: Int): String { return if (score >= 90) { "A" } else if (score >= 80) { "B" } else { "C" } }
Tip) 어떠한 값이 특정 범위에 포함되어 있는지, 포함되어 있지 않은지 판단하는 방법
Java에서는 다음과 같이 작성했습니다.
if (0 <= score && score <= 100) {...}
Kotlin에서 같은 방식을 사용할 수 있지만, 다음과 같이 사용도 가능합니다.
if (score in 0..100) {...}
switch와 when
Kotlin에서는 switch case문 대신 when을 사용합니다.
when (값) { 조건부 -> 구문 조건부 -> 구문 else -> 구문 }
다음은 Java의 switch case문과 Kotlin의 When 코드입니다.
// Java private String getGradeWithSwitch(int score) { switch (score / 10) { case 9: return "A"; case 8: return "B"; default: return "C"; } } // Kotlin fun getGradeWithSwitch(score: Int): String { return when (score / 10) { 9 -> "A" 8 -> "B" else -> "C" } }
Kotlin의 when은 특정 값 외 다음 코드와 같이 다양한 조건을 적용하여 분기할 수 있습니다.
fun getGradeWithSwitch(score: Int): String { return when (score) { in 90..99 -> "A" in 80..89 -> "B" else -> "C" } }
when 특징
- 조건부에는 어떠한 expression이라도 들어갈 수 있습니다. (ex. is Type)
- 조건부에서 여러 개의 조건을 동시에 검사할 수 있습니다. (쉼표(,)로 구분)
- (값)이 없을 수도 있습니다. (early return 처럼 동작)
- when은 Enum Class 혹은 Sealed Class와 함께 사용할 경우, 더욱더 진가를 발휘합니다.
when 특징에 대한 코드는 다음의 Java 및 Kotlin 코드를 참고하세요.
/* 조건부에는 어떠한 expression이라도 들어갈 수 있습니다. (ex. is Type) */ // Java private boolean startsWithA(Object obj) { if (obj instanceof String) { return ((String) obj).startsWith("A"); } else { return false; } } // Kotlin fun startsWithA(obj: Any): Boolean { return when (obj) { is String -> obj.startsWith("A") else -> false } } /* 조건부에서 여러 개의 조건을 동시에 검사할 수 있습니다. (쉼표(,)로 구분) */ // Java private void judgeNumber(int number) { if (number == 1 || number == 0) { System.out.println("0 또는 1입니다."); } else { System.out.println("0 또는 1이 아닙니다."); } } // Kotlin fun judgeNumber(number: Int) { when (number) { 1, 0 -> println("0 또는 1입니다.") else -> println("0 또는 1이 아닙니다.") } } /* (값)이 없을 수도 있습니다. (early return 처럼 동작) */ // Java private void judgeNumber2(int number) { if (number == 0) { System.out.println("주어진 숫자는 0입니다."); return; } if (number % 2 == 0) { System.out.println("주어진 숫자는 짝수입니다."); return; } System.out.println("주어진 숫자는 홀수입니다."); } } // Kotlin fun judgeNumber2(number: Int) { when { number == 0 -> println("주어진 숫자는 0입니다.") number % 2 == 0 -> println("주어진 숫자는 짝수입니다.") else -> println("주어진 숫자는 홀수입니다.") } }
감사합니다.
반응형'BackEnd > Kotlin' 카테고리의 다른 글
7강. 코틀린에서 예외를 다루는 방법 (0) 2024.02.07 6강. 코틀린에서 반복문을 다루는 방법 (0) 2024.02.05 4강. 코틀린에서 연산자를 다루는 방법 (0) 2024.01.31 3강. 코틀린에서 Type을 다루는 방법 (0) 2024.01.30 2강. 코틀린에서 null을 다루는 방법 (0) 2024.01.27