티스토리 뷰
반응형
Scope Function이란?
- 코틀린의 stlib은 let과 run, with, apply, also라는 다섯 개의
scope function
을 제공한다. - 이러한 함수들은 모두 1. 주어진 객체와 함께 2. 블록의 코드를 실행하여 3. 결과를 반환한다는 공통점을 갖는다.
- scope function은 모두 코드를 간결하게 하고 가독성을 향상시키는 데에 의의가 있다.
function | obj ref | returns |
---|---|---|
let | it | lambda result |
run(Any.run 형태로 실행) | this | lambda result |
run(수신 객체 없이 실행) | - | lambda result |
with | this | lambda result |
apply | this | ctx obj |
also | it | ctx obj |
선택 기준
상술한 Scope Function 중 무엇을 사용할지는 람다 블록 내의 obj reference와 반환 값 외에도 아래와 같은 기준으로 선택해볼 수 있다.
let
- not-null 객체로 람다 블록을 실행해야하는 경우
- 또는 가독성을 위한 변수를 로컬 scope에 선언하고자하는 경우
0.let { id -> if(id == 0) throw RuntimeException(id) }
같은 경우를 말하는 듯하다.
run
- 객체를 설정한 후, 임의의 결과를 연산해야 하는 경우
- 표현식이 필요한 곳에서 결과를 연산하되, 확장 함수로 사용할 필요가 없는 경우
apply
apply the following assignments to the object.
- 객체를 설정해야 하는 경우
also
and also do the following with the object.
- 사이드 이펙트가 필요한 경우
- 어떤 객체가 갖는 프로퍼티나 함수보다는 객체 자체를 사용하고 싶은 경우
- outer scope의 this 참조를 섀도잉하고 싶지 않은 경우
with
with this object, do the following.
- 임의의 객체를 활용하는 함수 호출을 그룹화하고자하는 경우
- 굳이 반환된 결과를 사용하고 싶지는 않은 경우
참고
Scope functions | Kotlin
kotlinlang.org
Coding conventions | Kotlin
kotlinlang.org
'Dev. > Kotlin' 카테고리의 다른 글
[mockk] private extension function 모킹하기 (0) | 2024.10.28 |
---|---|
[Kotlin] Class should have [public, protected] no-arg constructor 해결법 (0) | 2024.02.25 |
[SpringBoot] WebTestClient NoSuchBeanDefinitionException 예외 해결법 (0) | 2023.04.19 |
[Kotlin] java.security.InvalidKeyException: IOException : algid parse error 원인 (0) | 2023.03.21 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Gradle
- hashicorp
- Git
- Puppeteer
- eureka
- shell
- postgresql
- JEST
- spring boot
- Spring Cloud Config
- react
- AWS
- mysql
- javascript
- AWS IoT
- Vault
- 코딩테스트
- Linux
- Java
- IntelliJ
- Database
- kotlin
- Node.js
- terraform
- Docker
- pgloader
- etc
- RancherDesktop
- jQuery
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함