Skip to Content
Java에서 Kotlin으로
book

Java에서 Kotlin으로

by Duncan McGregor, Nat Pryce
May 2025
Beginner to intermediate
424 pages
7h 7m
Korean
O'Reilly Media, Inc.
Book available
Content preview from Java에서 Kotlin으로

9장. 다중 표현식에서 단일 표현식 함수

이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com

Nat과 Duncan은 모두 Kotlin의 단일 표현식 함수 정의를 좋아합니다. 이 형식을 언제 사용해야 하는지, 왜 선호하는지, 더 많은 함수를 단일 표현식으로 만들기 위해 어떤 Kotlin 기능을 사용할 수 있는지 궁금합니다.

Java의 경우 와 같이 Kotlin 함수의 코드는 일반적으로 { 중괄호 안에 정의됨 }이며return 를 사용하여 함수의 결과를 정의합니다( Unit, Kotlin의 별칭인 void 가 아닌 경우):

fun add(a: Int, b: Int): Int {
    return a + b
}

코드의 최상위 레벨이 단일 표현식인 경우, 선택적으로 결과 유형을 삭제하고 등호 뒤에 표현식을 사용하여 코드를 정의할 수 있습니다:

fun addToo(a: Int, b: Int): Int = a + b

add 함수의 결과는 와 같다는 식으로 읽을 수 있습니다. 이는 단일 표현식에서는 의미가 있으며, 해당 표현식 자체가 하위 표현식으로 구성된 경우에도 잘 읽을 수 있습니다: a + b

fun max(a: Int, b: Int): Int =
    when {
        a > b -> a
        else -> b
    }

이 해석은 부작용이 있는 함수, 특히 I/O를 수행하거나 변경 가능한 상태에 쓰는 함수에는 적합하지 않습니다:

fun printTwice(s: String): Unit = println("$s\n$s")

println 에는 결과가 없거나 적어도 결과를 반환하지 않기 때문에 printTwice 의 결과가 println(..) 과 같다고 읽을 수 없습니다. 7장에서 살펴본 것처럼 이 함수는 전적으로 부수적인 기능입니다.

계산을 위한 단일 표현식 함수 예약하기

계산("계산")을 위해 단일 표현식 함수를 예약하는 규칙을 채택하면 함수를 사용할 때 의도를 전달할 수 있습니다. 단일 표현식 함수를 보면 액션("액션")이 아니라는 것을 알 수 있으므로 리팩터링하는 것이 훨씬 더 안전합니다.

실제로 이는 단일 표현식 함수가 Unit 을 반환하거나 변경 가능한 상태에서 읽기 또는 쓰기(I/O 수행 포함)를 해서는 안 된다는 의미입니다.

작성자들은 가능한 한 많은 함수를 단일 표현식으로 만들면 소프트웨어가 개선된다는 사실을 발견했습니다. 우선, 계산에 단일 표현식 형식을 사용하면 코드에서 동작이 차지하는 비율이 줄어들어 이해하고 수정하기가 더 쉬워집니다. 또한 단일 표현식은 대안보다 짧은 경향이 있어 각 함수의 복잡성이 제한됩니다. 함수가 너무 커져서 쉽게 이해할 수 없는 경우, 단일 표현식을 사용하면 부작용과 동작 수행 순서에 따라 논리가 깨질 위험이 적어 명확성을 위해 더 쉽게 리팩터링할 수 있습니다.

또한 문 대신 표현식을 선호합니다. 표현식은 선언적입니다. 함수가 계산할 내용을 선언하고 Kotlin 컴파일러와 런타임이 해당 계산을 계산하는 방법을 결정하도록 합니다. ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

코드 밖 커뮤니케이션

코드 밖 커뮤니케이션

재퀴 리드
실리콘밸리 리더십

실리콘밸리 리더십

김정혜, 마이클 롭

Publisher Resources

ISBN: 9798341656055Supplemental Content