https://kotlinlang.org/docs/scope-functions.html
Scope functions | Kotlin
kotlinlang.org
범위기능 (Scope functions)
코틀린 표준 라이브러리에는 객체의 맥락 내에서 코드 블록 실행이 유일한 목적인 함수들이 포함되어 있다.
람다표현식을 제공하는 객체에서 함수를 호출 할 때 임시 범위를 형성한다. 이 범위에서는 이름없이 개체에 접근할 수 있다.
그런 함수를 범위함수라고 한다.
let, run, with, apply, also 다섯가지가 있다
기본적으로, 이런 함수는 모두 같은 작업을 수행한다: 객체에서 블록코드를 실행한다.
블록안에서 이 객체를 사용하는 방식과 전체 표현식의 결과가 다르다.
범위 함수를 사용하는 일반적인 예:
Person("Alice", 20, "Amsterdam").let {
println(it)
it.moveTo("London")
it.incrementAge()
println(it)
}
Person(name=Alice, age=20, city=Amsterdam)
Person(name=Alice, age=21, city=London)
여기서 만약 let없이 같은 값을 내려면 새로운 변수를 소개하고 사용할때마다 이름을 반복해야 한다
val alice = Person("Alice", 20, "Amsterdam")
println(alice)
alice.moveTo("London")
alice.incrementAge()
println(alice)
Person(name=Alice, age=20, city=Amsterdam)
Person(name=Alice, age=21, city=London)
범위 함수는 새로운 기술적 기능이 소개된건 아니지만 코드를 간결하고 가독성 높게 만들어 준다
범위 함수들은 유사점이 많아서 적합한 것을 고르는게 까다로울 수 있다. 당신의 프로젝트 안에서의 의도와 일관성에따라 선택이 달라진다. 아래에서 범위함수와 그들의 규칙의 차이점을 설명한다.
함수 선택 (Function selection)
목적에 맞는 함수를 선택 할 수 있도록 핵심요약한 표를 제공한다
Function | Object reference | Return value | Is extensionfunction |
let | it | Lambda result | Yes |
run | this | Lambda result | Yes |
run | - | Lambda result | No: called without the context object |
sith | this | Lambda result | No: takes the context object as an argument |
apply | this | Context object | Yes |
also | it | Context object | Yes |
데이터 - SharedPreferences (1) | 2024.05.01 |
---|---|
Kotlin Docs Extensions / 확장 프로그램 1 (0) | 2024.03.28 |
코틀린 lateinit과 by lazy에 대해서 (0) | 2024.03.22 |
코딩 컨벤션이란 (0) | 2024.03.05 |
코틀린 기본 문법 / 컬렉션 (0) | 2024.02.26 |