Hello, Android!

Scope Function apply 본문

Kotlin

Scope Function apply

lwndnjs93 2020. 7. 26. 14:21

코틀린에서는 모든 객체에 범위(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