[kotlin] Scope 함수(let, run, apply, also, with)

찌니·2022년 10월 12일
0

Android(Compose)

목록 보기
3/12
post-thumbnail

scope 함수?

kotlin 공식 문서에 따르면, 객체의 context 내에서 코드 블록을 실행하는 것을 목적으로 하며 함수 호출 시 객체의 이름 없이 객체에 접근 할 수 있는 기능을 가진 함수를 scope function이라고 한다. 이 스코프 함수에는 let, run, with, apply, also가 있다

예제를 통해 이 함수들에 대해 정리해보았습니다.

data class Person(val name: String, age: Int, department: String, club: String?)
data class Club(val name: String, val member: List<Student>)

val gdsc = Club("GDSC", emptyList())
val hyejin = Person("hyejin", 23, "software", null)

let

let은 확장함수로, 반환 결과가 람다의 결과이다
null 체크에 유용하게 쓰인다

hyejin.club?.let {
            print("가입한 club: $it")
        }

apply

apply는 확장함수로, 반환 결과가 객체 자신이다.

 hyejin.apply {
            this.club = "GDSC"
        }

also

also는 확장함수로, 반환 결과가 객체 자신이다.

gdsc.member.plus(hyejin).also {
            print("전체 회원들: $it")
        }

with

with는 확장함수가 아니며, 반환 결과는 람다의 결과이다.

with(gdsc) {
            print("club의 이름: ${this.name}")
            print("club의 멤버: ${this.member}")
        }

run

run은 확장함수로, 반환 결과는 람다의 결과이다.

val members = gdsc.run{
            this.member.size
        }
profile
찌니's develog

0개의 댓글