[kotlin] 스코프 함수를 사용하여 조건에 맞는 객체 생성하기
Kotlin에서는 스코프 함수를 사용하여 조건에 맞는 객체를 생성하고 초기화할 수 있습니다. 스코프 함수는 apply
, let
, run
, with
, also
등이 있으며, 각각의 함수는 객체 조작 시 다양한 방식으로 사용할 수 있습니다.
apply
함수
apply
함수는 객체의 컨텍스트에서 코드 블록을 실행하고 컨텍스트 객체 자체를 반환합니다. 주로 객체를 생성하고 초기화하는데 사용됩니다.
val person = Person("Alice").apply {
age = 30
city = "New York"
}
let
함수
let
함수는 객체를 제한된 범위 내에서 사용하고자 할 때 유용합니다. 이 함수는 람다 함수를 호출하고 람다 함수에 수신 객체를 전달합니다.
val nameLength = name?.let {
if (it.length > 10) {
println("Name is too long")
10
} else {
println("Name is valid")
it.length
}
}
run
함수
run
함수는 수신 객체의 코드 블록을 실행한 후 결과 값을 반환합니다. 이 함수는 수신 객체 없이 코드 블록을 실행하거나 수신 객체를 더 많이 사용하고자 할 때 사용됩니다.
val message = StringBuilder().run {
append("Hello, ")
append("Kotlin!")
toString()
}
with
함수
with
함수는 제공된 객체를 가져와 명시적으로 인스턴스의 멤버에 접근할 필요 없이 인스턴스의 메서드 및 속성에 엑세스할 수 있습니다.
val numbers = with(listOf(1, 2, 3)) {
println("Items count: $size")
sum()
}
also
함수
also
함수는 코드 블록을 실행하고 객체를 반환합니다. also
함수는 객체에 부작용이 필요할 때 유용합니다.
val result = mutableListOf<Int>().also {
it.add(3)
it.add(5)
}
스코프 함수를 활용하면 Kotlin에서 객체를 조건에 맞게 생성하고 초기화할 때 간결하고 가독성이 높은 코드를 작성할 수 있습니다.
참고: Kotlin 공식 문서 - Scope Functions