4. if & for loop
조건문과 반복문
1) if문 — 자바와 같지만 “표현식”
기본 문법은 자바와 동일
하지만 코틀린에서는 if 자체가 값(Expression)을 반환
따라서 삼항 연산자(
?:
)가 필요 없음
val max = if (a > b) a else b
자바였다면:
int max = (a > b) ? a : b;
👉 Kotlin은 if로 바로 값 할당 가능.
2) when — 자바 switch의 확장판
자바의
switch
대신 사용조건에 값, 타입, 범위, 여러 조건 등을 지정 가능
else
는 default와 같은 역할값 없는 when도 가능 → early return 같은 패턴에 유용
when (x) {
1 -> println("one")
in 2..5 -> println("range 2~5")
is String -> println("it's a String")
else -> println("other")
}
실무 활용
Enum / Sealed class와 조합 → 컴파일러가 모든 케이스 처리 여부 검사
3) for문 — 범위와 컬렉션 중심
for-each
for (item in list) {
println(item)
}
Java:
for (String item : list)
Kotlin:
in
키워드 사용
전통적 for문 → Range & Progression
for (i in 1..3) println(i) // 1, 2, 3
for (i in 3 downTo 1) println(i) // 3, 2, 1
for (i in 1..5 step 2) println(i)// 1, 3, 5
1..3
: 1부터 3까지 범위downTo
,step
: 등차수열 기반 진행
👉 코틀린의 전통적 for문은 사실상 IntProgression(등차수열) 기반
4) while / do-while
문법과 동작이 자바와 동일
var i = 0
while (i < 3) {
println(i)
i++
}
do {
println(i)
i--
} while (i > 0)
5) 실무 패턴
A. 리스트 순회
val names = listOf("A", "B", "C")
for ((index, name) in names.withIndex()) {
println("$index: $name")
}
→ withIndex()
로 인덱스와 값 동시 순회.
B. when + sealed class
sealed class UiState
object Loading : UiState()
data class Success(val data: String) : UiState()
object Error : UiState()
fun render(state: UiState) = when(state) {
Loading -> showLoading()
is Success -> showData(state.data)
Error -> showError()
}
→ 새 상태 추가 시 컴파일러가 경고, 실수 방지.
C. Range 활용
for (i in 0 until 10) { // 0..9
println(i)
}
→ off-by-one 에러 줄이는 패턴.
Last updated