본문 바로가기
Android/Kotlin

[Kotlin] Kotlin의 apply 문법 이해하기

by quessr 2024. 6. 24.

코틀린(Kotlin)은 간결하고 효율적인 코드를 작성하기 위해 다양한 유용한 기능을 제공합니다. 그중 하나가 바로 apply 함수입니다. 이 블로그에서는 apply 함수의 문법과 사용법에 대해 알아보겠습니다.

apply 함수란?

apply 함수는 코틀린의 스코프 함수 중 하나로, 객체의 초기화를 간결하고 명확하게 할 수 있게 해줍니다. 객체를 생성하고 나서, 해당 객체의 여러 속성을 설정해야 할 때 유용하게 사용됩니다.

apply 함수의 문법

apply 함수는 객체의 초기화 블록을 포함하여 객체 자체를 반환합니다. 이는 초기화 코드를 간결하게 작성하고, 중복을 줄이는 데 도움이 됩니다.

val person = Person().apply {
    name = "John Doe"
    age = 30
    address = "123 Main St"
}

 

위 코드에서 apply 블록 내의 this는 Person 객체를 가리키며, 블록 내에서 객체의 속성에 접근하고 설정할 수 있습니다. apply 함수는 블록을 실행한 후 객체 자체를 반환하므로, 생성된 객체를 다른 곳에서 바로 사용할 수 있습니다.

apply를 사용하지 않은 경우

apply를 사용하지 않고 동일한 작업을 수행하려면 다음과 같이 코드를 작성해야 합니다.

val person = Person()
person.name = "John Doe"
person.age = 30
person.address = "123 Main St"

 

이 방식은 코드가 길어지고 중복이 발생할 수 있습니다. 객체를 생성한 후 각 속성을 개별적으로 설정해야 하기 때문에 코드가 더 복잡해집니다.

apply 함수의 장점

  1. 간결성: 객체 초기화 블록을 한곳에 모아두어 코드가 더 간결해집니다.
  2. 가독성: 객체의 속성을 설정하는 코드를 한 블록 내에 작성함으로써 가독성이 높아집니다.
  3. 연속성: apply 함수는 객체를 반환하므로, 초기화 후 연속적인 작업을 수행할 때 유용합니다.

예시: RecyclerView의 LayoutManager 설정

RecyclerView의 LayoutManager를 설정할 때도 apply를 사용할 수 있습니다. 예를 들어, StaggeredGridLayoutManager를 설정할 때 다음과 같이 사용할 수 있습니다.

val layoutManager = StaggeredGridLayoutManager(2, LinearLayoutManager.VERTICAL).apply {
    gapStrategy = StaggeredGridLayoutManager.GAP_HANDLING_NONE
}

 

apply를 사용하지 않으면 다음과 같이 작성해야 합니다.

val layoutManager = StaggeredGridLayoutManager(2, LinearLayoutManager.VERTICAL)
layoutManager.gapStrategy = StaggeredGridLayoutManager.GAP_HANDLING_NONE

 

위 두 예시를 비교해 보면, apply를 사용한 코드가 더 간결하고 명확함을 알 수 있습니다.