2장 식(expression)에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2.3 조건문: if 문, 2.4 조건문: when 문을 참고하기 바랍니다. 코틀린에서는 if-식, when-식, try-식 처럼 문 대신 식으로 사용하는 게 간편할 때가 많습니다. 식과 문이 어떻게 다른지 정확히 짚고 넘어가겠습니다.
문(statement)과 식(expression)은 어떻게 구분할까요? 함수 main()은 중괄호로 둘러싸인 여러 문으로 이루어져 있습니다. 처음 2개 문은 변수에 초깃값을 설정한 할당문이며, 마지막은 if 문입니다. if 문은 조건식(a > = b)을 포함합니다. 식은 완전한 문이 아니며 식은 문의 일부분입니다.
fun main() {
val a = 9
val b = 8
if (a >= b)
println("A large value is $a")
else
println("A large value is $b")
}
코드를 아래처럼 수정해 볼까요... 이제 if는 if-식으로 바뀌었습니다. if-식이 할당문의 일부이기 때문입니다. if가 식이 되면서 달라진 점이 하나 더 있습니다. if-식은 식의 연산 결과인 값(a 또는 b)을 반환합니다. if-식에서는 else를 생략할 수 없습니다. else를 생략하면, 조건식의 결과가 false일 때 변수 max에 할당해야 하는 값을 지정할 수 없기 때문입니다.
fun main() {
val a = 9; val b = 8
val max = if (a >= b) a else b // 타입 생략 가능.
// val max: Int = if (a >= b) a else b
println("A large value is $max")
}
아래처럼 if-식을 작성하면 어떻게 될까요? 각 블록에서는 마지막 식을 반환합니다. 잠깐! 변수 a도 식인가요? 할당문(val a = 9)을 보세요. 숫자 9도 당연히 식입니다. if 블록에서는 a를, else 블록에서는 b를 각각 반환합니다.
fun main() {
val a = 9; val b = 8
val max = if (a >= b) {
println("A large value is $a")
a
} else {
println("A large value is $b")
b
}
println("A large value is $max")
}
마무리 예제를 다뤄보겠습니다. 아래처럼 람다 식으로 바꿔 볼까요... 람다 식도 식입니다. 람다 식은 할당문의 일부이며, 값을 반환합니다.
fun main() {
val a = 9; val b = 8
val max: (Int, Int)->Int = { x:Int, y:Int -> if (x >= y) x else y }
println("A large value is ${max(9, 8)}")
}
'코틀린' 카테고리의 다른 글
코틀린 : 2장 테스트에 도전해 보세요 (0) | 2025.01.06 |
---|---|
코틀린: 연산자 in과 범위(updated) (0) | 2025.01.06 |
1장 - 테스트에 도전해 보세요(정답 해설) (0) | 2024.09.14 |
코틀린: 1장 테스트에 도전해 보세요 (0) | 2024.09.08 |
코틀린: 널 타입과 안전 호출, 스마트 타입 변환(updated) (0) | 2024.09.04 |