[kotlin] also() 함수와 apply() 함수의 비교

코틀린에서는 객체의 초기화 또는 조작을 위해 also() 함수와 apply() 함수를 사용할 수 있습니다. 이 두 함수는 객체의 상태를 변경하거나 객체를 다른 함수로 전달할 때 유용합니다. 하지만 두 함수는 서로 다른 방식으로 동작합니다. 이번 포스트에서는 also() 함수와 apply() 함수를 비교하여 각각의 용도와 사용법을 알아보겠습니다.

also() 함수

also() 함수는 객체를 전달받아 람다 함수를 실행한 후 해당 객체를 반환하는 함수입니다. 주로 객체를 초기화하거나 값을 로깅할 때 유용합니다. 아래는 also() 함수의 간단한 사용 예시입니다.

val person = Person().also {
    it.name = "John"
    it.age = 30
}.also {
    logPerson(it)
}

위의 예시에서 also() 함수를 사용하여 Person 객체를 초기화하고, 그 객체를 다시 logPerson 함수에 전달합니다.

apply() 함수

반면에 apply() 함수는 객체의 컨텍스트를 변경하고 해당 객체를 반환합니다. 주로 객체의 속성을 설정할 때 유용합니다. 아래는 apply() 함수의 간단한 사용 예시입니다.

val person = Person().apply {
    name = "John"
    age = 30
}

위의 예시에서 apply() 함수를 사용하여 Person 객체의 속성을 설정합니다.

두 함수의 비교

also() 함수와 apply() 함수는 모두 객체의 초기화나 변경에 사용될 수 있지만, also() 함수는 객체를 반환하기 전에 추가적인 작업을 수행하는 데에 주로 사용되고, apply() 함수는 객체의 속성을 설정하는 데에 주로 사용됩니다. 따라서 어느 상황에 어떤 함수를 사용할지를 결정할 때 이 차이를 고려해야 합니다.

결론

also() 함수와 apply() 함수는 객체를 다룰 때 유용한 도구로, 각각의 특성에 따라 적절한 상황에 사용할 수 있습니다. 위의 설명을 참고하여 적절한 상황에 각 함수를 적용하여 객체의 초기화나 변경을 보다 편리하게 할 수 있습니다.

참고문헌: