λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

빈 ꡬ멍 μ±„μš°κΈ°

[Kotlin] statement(λ¬Έ)와 expression(식)

좜처

Kotlin In Action

ChatGPT

https://blog.kotlin-academy.com/kotlin-programmer-dictionary-statement-vs-expression-e6743ba1aaa0

 

Kotlin programmer dictionary: Statement vs Expression

Statement and expression are two important terms which are commonly misunderstood. Let’s start explanation from the expression term.

blog.kotlin-academy.com

 


1. Expression 식

값을 λ°˜ν™˜ν•˜λŠ” μ½”λ“œ. λ‹€λ₯Έ μ‹μ˜ ν•˜μœ„ μš”μ†Œλ‘œ 계산에 μ°Έμ—¬ν•  수 μžˆλ‹€.

μ½”ν‹€λ¦°μ—μ„œ λͺ¨λ“  ν•¨μˆ˜λ“€μ€ 적어도 Unit을 λ°˜ν™˜ν•œλ‹€. 즉, λͺ¨λ“  ν•¨μˆ˜ ν˜ΈμΆœμ€ 식이닀.

μžλ°”μ—μ„œ if, switch와 같은 μ œμ–΄ ꡬ쑰듀은 식이 μ•„λ‹ˆμ§€λ§Œ, μ½”ν‹€λ¦°μ—μ„œ if, when, try 문은 값을 λ°˜ν™˜ν•˜λŠ” 식이닀.

 

2. Statement λ¬Έ

νŠΉμ • λ™μž‘μ„ μˆ˜ν–‰ν•˜μ§€λ§Œ 값을 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” μ½”λ“œ. 

ν”„λ‘œκ·Έλž¨μ˜ 흐름을 μ œμ–΄ν•˜κ±°λ‚˜ λͺ…령을 μˆ˜ν–‰ν•œλ‹€.

 

식과 문을 μ™œ μ•Œκ³  이해해야 ν•˜λŠ”κ°€?

1. μœ μ—°ν•œ μ½”λ“œ μž‘μ„±

λŒ€λΆ€λΆ„μ˜ μ œμ–΄ ꡬ쑰λ₯Ό μ‹μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ–΄μ„œ, 값을 λ°”λ‘œ λ°˜ν™˜ν•˜κ³  λ³€μˆ˜μ— ν• λ‹Ήν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€. 이것은 λΆˆν•„μš”ν•œ μ½”λ“œλ₯Ό 쀄이고, 더 κΉ”λ”ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 있게 ν•œλ‹€.

val result = if (x > 5) "Big" else "Small"

 

μžλ°”μ—μ„œλŠ” λ³„λ„λ‘œ λ³€μˆ˜μ— 값을 ν• λ‹Ήν•˜λŠ” μΆ”κ°€ μ½”λ“œκ°€ ν•„μš”ν•˜μ§€λ§Œ, 코틀린은 μ‹μœΌ 톡해 κ°„κ²°ν•œ μ½”λ“œλ₯Ό μ œκ³΅ν•œλ‹€.

2. μ—λŸ¬ 예방

코틀린은 κ°•λ ₯ν•œ νƒ€μž… μ‹œμŠ€ν…œκ³Ό κ²°ν•©ν•΄μ„œ, 식이 항상 μžˆλŠ” 값을 λ°˜ν™˜ν•˜λ„λ‘ 보μž₯ν•©γ„΄λ‹€. 이λ₯Ό 톡해 λ³€μˆ˜μ— 값을 ν• λ‹Ήν•  λ•Œ 였λ₯˜λ₯Ό 사전에 방지할 수 μžˆλ‹€.

예λ₯Ό λ“€μ–΄, if문이 문이라면 값을 λ°˜ν™˜ν•˜μ§€ μ•Šμ„ 수 μžˆμ§€λ§Œ, if 문이 식이기 λ•Œλ¬Έμ— 항상 값이 ν•„μš”ν•˜λ‹€λŠ” 것을 λͺ…ν™•νžˆ 이해할 수 μžˆλ‹€.

3. μ½”λ“œ 가독성 ν–₯상

식과 문을 λͺ…ν™•νžˆ κ΅¬λΆ„ν•˜λ©΄ μ½”λ“œμ˜ 가독성이 크게 ν–₯μƒλœλ‹€. 식을 μ‚¬μš©ν•˜λ©΄ μ½”λ“œμ˜ 흐름이 직관적이고, 무엇이 μ‹€ν•΄μ• λ˜κ³  λ³€ν™˜λ˜λŠ”μ§€ μ‰½κ²Œ μ•Œ 수 μžˆλ‹€. 이λ₯Ό 톡해 μ½”λ“œμ˜ ꡬ쑰λ₯Ό 더 λͺ…ν™•ν•˜κ²Œ λ§Œλ“€κ³ , λ‹€λ₯Έ κ°œλ°œμžκ°€ μ½”λ“œλ₯Ό 읽을 λŒ€ 더 μ‰½κ²Œ 이해할 수 μžˆλ‹€.

4. μ—λŸ¬ 핸듀링 μ΅œμ ν™”

μ½”ν‹€λ¦°μ˜ try-catch 블둝도 식이닀. 즉, μ˜ˆμ™Έκ°€ λ°œμƒν•  경우 그에 따라 μ μ ˆν•œ 값을 λ°˜ν™˜ν•  수 있고, μ΄λŠ” μ—λŸ¬ 핸듀링을 λ‹¨μˆœν•˜κ³  μ§κ΄€μ μœΌλ‘œ λ§Œλ“€ 수 μžˆλ‹€.

 

μ˜ˆμ‹œ

val result = try {
    riskyOperation()
} catch (e: Exception) {
    "Error"
}

5. ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° 지원

코틀린은 ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ„ μ§€μ›ν•˜λŠ” μ–Έμ–΄λ‘œ, 식 기반 ν”„λ‘œκ·Έλž˜λ°μ΄ 맀우 μ€‘μš”ν•˜λ‹€. ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ½”λ“œλŠ” 주둜 μ‹μœΌλ‘œ κ΅¬μ„±λ˜λ©°, 이 식듀은 값을 λ°˜ν™˜ν•˜λŠ” 것이 νŠΉμ§•μ΄λ‹€. 식을 μ œλŒ€λ‘œ μ΄ν•΄ν•˜λ©΄ 더 효과적으둜 ν•¨μˆ˜ν˜• μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλ‹€.