코틀린에서는 객체의 초기화 또는 조작을 위해 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()
함수는 객체를 다룰 때 유용한 도구로, 각각의 특성에 따라 적절한 상황에 사용할 수 있습니다. 위의 설명을 참고하여 적절한 상황에 각 함수를 적용하여 객체의 초기화나 변경을 보다 편리하게 할 수 있습니다.
참고문헌: