728x90
if문
- 자바와 코틀린은 똑같이 생김
- 차이점
- 자바에서 if-else는 Statement
- 코틀린에서는 Expression
Expression과 Statement
- Statement: 프로그램의 문장. 하나의 값으로 도출되지 않는다.
- 자바에서는 if문을 하나의 값으로 취급하지 않는다. ( Statement )
- Expression: 하나의 값으로 도출되는 문장.
- 자바에서 3항 연산자는 하나의 값으로 취급된다. ( Expression 이면서 Statement )
- 코틀린에서는 if-else를 expression으로 사용할 수 있기때문에 3항 연산자가 없다.
// Expression & Statement - if / else
fun getPassOrFail(score: Int): String {
return if (score >= 50) {
"Pass"
} else {
"Fail"
}
}
// Expression & Statement - if / else if / else
fun getGrade(score: Int): String {
return if (score >= 90) {
"A"
} else if (score >= 80) {
"B"
} else if (score >= 70) {
"C"
} else {
"D"
}
}
- 어떤 값이 특정 범위에 포함되어 있는지, 포함되어 있지 않은지
- if (score in 0..100)
switch와 when
when (값) {
조건부 -> 어떤 구문
조건부 -> 어떤 구문
else -> 어떤 구문
}
// Switch -> When
fun getGradeWithSwitch1(score: Int): String {
return when (score / 10) {
9 -> "A"
8 -> "B"
7 -> "C"
else -> "D"
}
}
fun getGradeWithSwitch2(score: Int): String {
return when (score) {
in 90..99 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
else -> "D"
}
}
- 조건부에는 어떠한 expression이라도 들어갈 수 있다.
- Ex) is Type
fun startsWithA(obj: Any): Boolean {
return when (obj) {
is String -> obj.startsWith("A") // smart casting
else -> false
}
}
- 조건부에서는 여러개의 조건을 동시에 검사할 수 있다. ( , 로 구분한다. )
// 조건부에서는 여러개의 조건을 동시에 검사할 수 있다. ( , 로 구분한다. )
fun judgeNumber(number: Int) {
return when (number) {
1, 0, -1 -> println("어디서 많은 본 숫자")
else -> println("듣도보도 못한 숫자")
}
}
- 값이 없을수도 있다. -> early return 처럼 동작
// 값이 없을수도 있다. -> early return 처럼 동작
fun judgeNumber2(number: Int) {
when {
number == 0 -> println("주어진 숫자는 0입니다.")
number % 2 == 0 -> println("주어진 숫자는 짝수입니다.")
else -> println("주어진 숫자는 홀수입니다.")
}
}
- when은 Enum class 혹은 Sealed class 와 함께 사용할 경우에 더욱 진가를 발휘한다.
728x90
'Language > kotlin' 카테고리의 다른 글
예외 다루기 (0) | 2023.05.18 |
---|---|
반복문 다루기 (0) | 2023.05.18 |
연산자 다루기 (0) | 2023.05.17 |
Type을 다루는 방법 (0) | 2023.05.17 |
null과 관련하여 (0) | 2023.05.16 |