2024-06-21
This commit is contained in:
95
Writerside/topics/Condition.md
Normal file
95
Writerside/topics/Condition.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# 조건문
|
||||
|
||||
## if .. else if .. else ..
|
||||
|
||||
코틀린의 `if`문은 표현식이므로 값을 반환합니다. 그래서 삼항 연산자를 대신할 수 있습니다.
|
||||
|
||||
```kotlin
|
||||
if (a > b) c = a
|
||||
```
|
||||
|
||||
```kotlin
|
||||
if (a > b) {
|
||||
c = a
|
||||
} else {
|
||||
c = b
|
||||
}
|
||||
```
|
||||
|
||||
```kotlin
|
||||
c = if (a > b) a else b
|
||||
```
|
||||
|
||||
`if` 구문에 블록을 사용하는 경우에는 마지막 표현식이 반환값이 됩니다.
|
||||
|
||||
```kotlin
|
||||
val c = if (a > b) {
|
||||
doSomething()
|
||||
a
|
||||
} else {
|
||||
doSomething()
|
||||
b
|
||||
}
|
||||
```
|
||||
|
||||
`if`가 값을 반환하는 경우에는 반드시 `else`도 필요합니다.
|
||||
|
||||
## when
|
||||
|
||||
다른 언어의 `switch.. case` 구문과 유사합니다. `if`와 마찬가지로 표현식이므로 값을 반환합니다.
|
||||
|
||||
자바와 달리, `break`를 사용하지 않습니다.
|
||||
|
||||
```kotlin
|
||||
when(x) {
|
||||
1 -> print("x = 1")
|
||||
2 -> print("x = 2")
|
||||
else -> {
|
||||
print("x != 1 and x != 2")
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`if`와 마찬가지로 `when`이 값을 반환하는 경우에는 반드시 `else`도 필요하지만, `when`이 `enum`에 대해서 사용될 때에는 `else`가 없어도 됩니다.
|
||||
|
||||
```kotlin
|
||||
enum class Bit {
|
||||
ZERO, ONE
|
||||
}
|
||||
|
||||
val value = when(someBitValue) {
|
||||
Bit.ZERO -> 0
|
||||
Bit.ONE -> 1
|
||||
}
|
||||
```
|
||||
|
||||
콤마(',')를 사용해서 여러 조건을 묶을 수 있습니다.
|
||||
|
||||
```kotlin
|
||||
when(x) {
|
||||
1, 2 -> print("x = 1 or x = 2")
|
||||
else -> {
|
||||
print("x != 1 and x != 2")
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
조건에 표현식을 사용할 수도 있습니다.
|
||||
|
||||
```kotlin
|
||||
when(x) {
|
||||
s.toInt() -> print("..")
|
||||
else -> print(".....")
|
||||
}
|
||||
```
|
||||
|
||||
`in`또는 `!in`과 함께라면, 레인지나 컬렉션을 활용할 수도 있습니다.
|
||||
|
||||
```kotlin
|
||||
when(x) {
|
||||
in 1..10 -> print("..")
|
||||
in someNumbers -> print("....")
|
||||
!in 10..20 -> print(".....")
|
||||
else -> print(".........")
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user