[kotlin] also() 함수를 사용하여 로그 기록하기

Kotlin에서 개발을 하다 보면 객체의 상태를 확인하기 위해 로그를 남겨야 하는 경우가 많습니다. 이때 also() 함수를 사용하면 객체의 속성을 로깅하고 나중에도 계속해서 같은 객체를 다룰 수 있습니다.

also() 함수란?

also() 함수는 특정 객체에 대해 수행할 일련의 작업을 정의할 수 있습니다. 이 함수는 람다식을 받아들여서 해당 객체를 인자로 전달하고 람다식 내부에서 필요한 작업을 수행한 후 해당 객체를 반환합니다.

data class Person(val name: String, var age: Int)

fun main() {
    val person = Person("Alice", 25).also {
        println("생성된 Person 객체: $it")
        it.age = 26
        println("나이가 수정된 Person 객체: $it")
    }
}

위의 예제에서 also() 함수를 사용하여 Person 객체를 생성하고, 해당 객체의 속성을 변경하는 과정에서 로그를 남기고 있습니다.

이렇게 also() 함수를 사용하면 객체의 속성을 변경하고 나서도 동일한 객체를 계속해서 처리할 수 있기 때문에 매우 편리합니다.

활용 방법

also() 함수는 객체의 속성 변경 외에도, 객체의 상태를 확인하기 위해 로깅을 하는 등 다양한 용도로 활용될 수 있습니다.

val numbers = mutableListOf(1, 2, 3, 4, 5).also {
    println("초기 리스트: $it")
    it.add(6)
    println("원소 추가 후 리스트: $it")
}

위의 예제에서는 also() 함수를 사용하여 mutableListOf로 만들어진 리스트에 대해 초기 상태와 원소를 추가한 후의 상태를 로깅하고 있습니다.

결론

also() 함수는 Kotlin에서 객체의 상태를 확인하고, 속성을 변경하며 동일한 객체를 계속 다룰 때 매우 유용합니다. 객체의 상태 변화를 추적하거나 디버깅을 위해 로깅을 남기는 등 다양한 상황에서 쉽게 활용할 수 있습니다.

이와 같은 기능으로 코드의 가독성을 높이고, 유지 보수를 용이하게 할 수 있는 also() 함수에 대해 알아봤습니다.


참고문헌: