2023. 1. 1. 16:11ㆍ정리
범위 지정 함수 (Scope function)란?
범위 지정 함수는 특정 객체에 대한 작업을 블록 안에 넣어 실행할 수 있도록 하는 함수이다.
블록은 특정 객체에 대해 할 작업의 범위가 되고, 따라서 범위 지정 함수라고 한다.
1. apply 수신객체 내부 프로퍼티를 변경한 다음 수신객체 자체를 반환하기 위해 사용되는 함수이다
val a = A().apply {
b = "B"
c = 30
}
기존
val a = A()
a.b = "B"
a.c = 30
2. run은 apply와 똑같이 동작하지만 수신 객체를 return하지 않고, run 블록의 마지막 라인을 return 하는 범위 지정 함수이다. 수신 객체에 대해 특정한 동작을 수행한 후 결과값을 리턴 받아야 할 경우 사용
data class A (
var name: String = "",
var age: Int = 0,
var temp: Float = 36.5f
) {
fun isTemp(): Boolean = temp > 37.5f
}
val a = A("AA", 29, 38.0)
val isA = a.run {
temp = 38.0
isTemp() // return 값 : true
}
3. with는 수신객체에 대한 작업 후 마지막 라인을 return 한다. run과 완전히 똑같이 동작한다. 다른점 하나는 run은 확장 함수로 사용되지만 with는 수신객체를 파라미터로 받아 사용한다는 점이다.
val a = A("AA", 29, 38.0)
val isA = with(a) {
temp = 38.0
isTemp() // return 값 : true
}
4. let은 수신객체를 이용해 작업을 한 후 마지막 줄을 return 할 때 사용한다. run 이나 with과는 수신객체를 접근할 때 it을 사용해야 한다.
null 체크 후 코드를 실행해야 하는 경우
nullable한 수신객체를 다른 타입의 변수로 변환하는 경우
5. also는 apply와 마찬가지로 수신객체 자신을 반환한다.
val age = 5
fun getAge() = age.also {
age++
}
getAge() // 5
getAge() // 6
'정리' 카테고리의 다른 글
[Android] 리사이클러뷰 android:clipToPadding="false" (0) | 2023.01.03 |
---|---|
[Android] Kotlin val, var 차이 (0) | 2023.01.01 |
[Android] Kotlin String? 에 대한 (0) | 2023.01.01 |
[Android Studio] firebase crash report viewer (0) | 2023.01.01 |
[Android] Visible Gone 자동 애니메이션 (0) | 2023.01.01 |