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으로

10장. 함수에서 확장 함수까지

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

Kotlin에는 메서드처럼 호출되지만 실제로는 (일반적으로) 최상위 함수인 확장 함수라는 특별한 종류의 프로시저가 있습니다. 일반 함수에서 확장 함수로 쉽게 변환할 수 있습니다. 언제 어느 것을 더 선호해야 할까요?

기능 및 방법

객체 지향 프로그래밍 은 객체에 메시지를 보내 문제를 해결하는 기술입니다. myString 의 길이를 알고 싶으세요? 메시지를 보내 물어보세요 myString.length() 그 문자열을 콘솔에 인쇄하고 싶으세요? 메시지에 문자열을 넣고 콘솔을 나타내는 다른 객체에 인쇄해 달라고 요청하세요: System.out.println(myString). 고전적인 OO 언어에서는 클래스에 메서드를 정의하여 객체가 메시지에 반응하는 방식을 정의합니다. 메서드는 해당 클래스에 바인딩되어 특정 인스턴스와 관련된 멤버(필드 및 기타 메서드)에 액세스할 수 있습니다. 메서드를 호출하면 런타임은 올바른 버전이 호출되도록(객체의 런타임 유형에 따라 다름) 인스턴스 상태에 액세스할 수 있도록 준비합니다.

반면 함수형 프로그래밍에서는 값으로 함수를 호출하여 문제를 해결합니다. myString 의 길이를 함수에 전달하여 length(myString) 의 길이를 구합니다. println(myString) 로 콘솔에 출력하고, 다른 곳에 출력하려면 println(myString, System.err) 로 함수에 전달합니다. 함수는 유형에 정의되지 않지만 함수 매개변수와 결과에는 유형이 있습니다.

패러다임에는 장단점이 있지만 지금은 검색 가능성과 확장성만 고려해 보겠습니다.

다음은 Customer 유형입니다:

data class Customer(
    val id: String,
    val givenName: String,
    val familyName: String
) {
    ...
}

이것은 클래스이므로 id, givenName, familyName 를 요청하는 메시지를 보낼 수 있다는 것을 바로 알 수 있습니다. 다른 작업은 어떻습니까? 클래스 기반 시스템에서는 아래로 스크롤하기만 하면 보낼 수 있는 다른 메시지를 확인할 수 있습니다:

data class Customer(
    val id: String,
    val givenName: String,
    val familyName: String
) {
    val fullName get() = "$givenName $familyName"
}

종종 우리는 정의를 살펴보지도 않습니다. val customer: Customer 변수가 있는 경우 customer. 을 입력하면 IDE가 id, givenName, familyName 또는 fullName 을 호출할 수 있다고 열심히 알려줍니다. 사실 이 자동 완성 기능은 슈퍼타입에 정의되거나 언어에 암시된 다른 연산(equals, copy 등)도 보여주기 때문에 클래스 정의를 보는 것보다 여러 면에서 더 나은 ...

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