Lewis's Tech Keep
[Kotlin] 코틀린 적응기 - scope function 본문
시작
실제로는 다른 코드로 많이 쓸 것 같은데 가독성과 같은 측면에서 사용하는 경우가 많다고 하니 알아두자.
배우고 있는 것
https://www.inflearn.com/course/java-to-kotlin
1. scope function
let, apply, also, run, with
와 같은 것들을 사용할 수 있다.
let
주요 목적: 특정 객체의 결과를 가지고 작업을 수행할 때 사용.
사용 사례: null 체크 후 처리, 값을 변환하거나 가공할 때.
문맥: 해당 객체가 파라미터로 전달됨(it으로 접근).
리턴 값: 람다의 결과를 반환.
apply
주요 목적: 객체의 컨텍스트에서 일련의 작업을 수행하고 결과를 반환.
사용 사례: 특정 객체의 프로퍼티를 기반으로 계산하거나 로직을 처리한 후 결과를 반환할 때.
문맥: 해당 객체가 this로 사용됨.
리턴 값: 람다의 결과를 반환.
also
주요 목적: 객체를 수정한 후 동일한 객체를 반환.
사용 사례: 객체 초기화나 설정 시 사용, 객체를 구성하는데 유용.
문맥: 해당 객체가 this로 사용됨.
리턴 값: 객체 자신을 반환.
run
주요 목적: 객체를 그대로 유지하면서 추가 작업을 수행할 때 사용 (주로 로깅, 디버깅).
사용 사례: 객체에 영향을 미치지 않는 부가적인 작업(예: 로깅) 후에도 객체를 반환하고 싶을 때.
문맥: 해당 객체가 파라미터로 전달됨(it으로 접근).
리턴 값: 객체 자신을 반환.
with
주요 목적: 객체의 작업을 수행하지만 그 객체가 아닌 다른 값을 반환.
사용 사례: 한 객체에서 여러 작업을 수행한 후, 객체가 아닌 결과를 반환하고 싶을 때.
문맥: 해당 객체가 this로 사용됨.
리턴 값: 람다의 결과를 반환.
나중에 필요할 때마다 보면 될 것 같고 let, with 의 예시만 가져 와 보았다.
let
fun printPerson(person: Person?) {
// let (scope function)
// 확장함수 람다를 받아 실행 결과를 반환한다.
person?.let {
println(it.name)
println(it.age)
}
}
with
val userProfile = with(user) {
UserProfileDto(
userId = id, // UserDto의 id를 사용
fullName = name, // UserDto의 name을 사용
contactEmail = email // UserDto의 email을 사용
)
}
'Kotlin > Kotlin 적응기' 카테고리의 다른 글
[Kotlin] 코틀린 적응기 - 기본 강의 완료 후. 24.10.01 (0) | 2024.10.01 |
---|---|
[Kotlin] 코틀린 적응기 - typealias, as import, 람다 break & continue, label, takeif (0) | 2024.10.01 |
[Kotlin] 코틀린 적응기 - 람다, 컬렉션 함수형 (0) | 2024.10.01 |
[kotlin] 코틀린 적응기 - 배열 & 컬렉션, 함수 (0) | 2024.10.01 |
[Kotlin] 코틀린 적응기 - 중첩 클래스, data class & enum class & sealed class (0) | 2024.10.01 |