Notice
Recent Posts
Recent Comments
Link
Hello, Android!
Scope Function apply 본문
코틀린에서는 모든 객체에 범위(Scope)함수를 기본적으로 제공한다
이는 객체를 사용할때 해당 범위 내에서는 별도의 이름 없이 객체에 접근이 가능하다
범위 지정 함수로는 apply, with, let, also, run이 있다
이들은 공통적으로
- 수신 객체
- 수신 객체 지정 람다
이 두가지 구성 요소를 가진다
- apply
apply는 호출하는 객체를 블록에 넘겨주고 다시 객체를 반환한다
객체를 반환하는 점에서는 aslo와 유사해보이지만
inline fun <T> T.apply(block: T.() -> Unit): T
inline fun <T> T.also(block: (T) -> Unit): T
T.()에서 람다식이 확장함수로 처리되는것을 알수있다
apply에서는 확장함수로 처리되기때문에 it이 아닌 this로 접근을 한다
원본 객체에 데이터를 변경하고 그 객체를 다시 반환하기때문에
ryan을 출력했을때 Friends(name=Muzi, age=4) 가 나온다
두번째 apply를 호출한 뒤 ryan과 con을 출력할때는
둘 다 Friends(name=Con, age=6) 가 출력된다
- apply 사용 예
람다식 내부에서 객체의 함수를 사용하지 않고, 객체를 다시 반환하는 경우에 apply를 사용한다
객체의 프로퍼티만을 사용하는 경우로 객체 초기화가 있다
'Kotlin' 카테고리의 다른 글
Scope Function with (0) | 2020.08.02 |
---|---|
Scope Function run (0) | 2020.07.26 |
Scope Function also (0) | 2020.07.25 |
Scope Function let (0) | 2020.07.24 |
클로저 (0) | 2020.07.23 |