이 게시물은 다음 링크를 참조하여 학습했습니다
Kotlin의 Scope functions(let, run, with, apply, also)에 대해서 알아보기
Scope functions는 let, run, with, apply, also를 말합니다. Scope functions는 객체에 접근하는 방법을 쉽게 해 줍니다. 이런 함수들을 이용하면 코드가 간결해지고, 가독성을 높여줄 수 있습니다. 위의 5개 함
codechacha.com
코틀린(Kotlin)의 Scope Function(let, with, run, apply, also) 정리
Scope Function 이라는 함수명에서 알 수 있듯이, 이 함수들을 람다식을 이용해서 호출하면 일시적인 Scope(범위)가 생기게 되고, 이 범위 안에서는 전달된 객체에 대해 "it" 또는 "this" 라는 Context Object
0391kjy.tistory.com
Scope functions | Kotlin
kotlinlang.org
1. Scope Functions?
Scope Function은 자바에는 없지만 코틀린에서 제공하는 기본 라이브러리 함수다.
Scope Function은 객체에 접근하는 방법을 쉽게 해준다.
이를 활용하면 코드를 간결하게 하고, 가독성을 높여줄 수 있다.
Scope Function에는 서로 다른 두가지 주요 차이점이 있다.
- Context Object를 참조하는 방법(this, it)
- return value
2. Context Object: this or it
Scope Funtion의 람다식 내에서 Context Object는 실제 객체명 대신 "it" 또는 "this"키워드로 접근하게 된다.
2-1. this
run, with, apply는 Context Object를 "this"로 참조한다.
2-2. it
let, also는 Context Object를 "it"으로 참조한다.
지정하지 않으면 기본적으로는 "it"으로 접근하고, 인자명을 지정해줄수 있다.
3. return value: Context Object or Lambda result
3-1. Context Object
apply, also의 반환 값은 Context Object 객체 자체이다.
그렇기 때문에 체인 형식으로 계속적인 호출이 가능하다.
3-2. Lambda result
let, run, with는 람다식 결과를 반환한다.
결과에 대한 추가작업이 필요할 때 사용하거나, 반환 값을 무시하고 임시 범위로 사용할 수 있다.
4. Use Case
4-1. let
객체 결과값에 하나 이상의 함수 호출하는 경우 사용
nullable 객체에 대해 let을 사용하면, null이 아닌 객체일때만 실행이 가능하다
4-2. with
이미 생성된 Context Object 객체를 인자로 받아서 사용
4-3. run
with와 비슷한 역할, 전달받는 위치가 다르다, let처럼 safe call(?.)을 붙혀서 null 체크 가능(더 자주 사용됨)
4-4. apply
객체 초기화시 가장 많이 사용
4-5. also
기존 객체를 수정하거나 변경하지 않고, 디벙깅을 위한 로깅등의 부가작업 하려할때 사용
5. 요약
Funtion | Context Object | Return Value |
let | it | Lambda result |
run | this | Lambda result |
with | this | Lambda result |
apply | this | Context Object |
also | it | Context Object |
'Legacy' 카테고리의 다른 글
[Kotlin #6] 확장 함수(Extension Functions) (0) | 2022.05.23 |
---|---|
[Kotlin #5] Inline Functions (0) | 2022.05.16 |
[Kotlin #3] Collections (0) | 2022.05.16 |
[Kotlin #2] 고급문법 (0) | 2022.05.11 |
[Kotlin #1] 기본문법 (0) | 2022.05.11 |