스코프 함수

고성욱·2023년 3월 20일
0

안드로이드

목록 보기
20/26

코틀린에서는 스코프 함수라는 특별한 함수가 제공됩니다. 스코프 함수는 객체의 속성에 접근하거나 메서드를 호출하는 등의 작업을 보다 간결하게 처리할 수 있는 기능을 제공합니다.

  • 코드를 축약해서 표현할 수 있도록 도와주는 함수, 영역 함수라고도 합니다.
  • 함수처럼 사용은 아하며, run, let처럼 괄호 없이 일종의 키워드로 사용할 수 있습니다.
  • Safe Call남용을 막아주는 역할도 하기 때문에 많이 사용하는 요소 입니다.

스코프 함수에는 다음과 같은 종류가 있습니다.

1. let

let 함수는 null이 아닌 객체에 대해서만 수행되며, 객체를 파라미터로 받습니다. 람다식 내에서는 해당 객체를 it 키워드로 참조할 수 있습니다. 반환값은 람다식의 마지막 구문의 결과값입니다.

val name: String? = "John Doe"
name?.let {
    println(it.length) // name이 null이 아닐 때만 실행
}

2. also

also 함수는 객체를 파라미터로 받고, 람다식 내에서 해당 객체를 it 키워드로 참조할 수 있습니다. 반환값은 해당 객체 자체입니다.

val list = mutableListOf<String>()
list.also {
    println("List has been created.")
}.add("apple")

3. apply

apply 함수는 객체를 파라미터로 받고, 람다식 내에서 해당 객체를 this 키워드로 참조할 수 있습니다. 반환값은 해당 객체 자체입니다.

val person = Person("John Doe").apply {
    age = 30
    gender = "Male"
}

4. run

run 함수는 let 함수와 유사하지만, 해당 객체를 this 키워드로 참조할 수 있습니다. 반환값은 람다식의 마지막 구문의 결과값입니다.

val result = "John Doe".run {
    println(length)
    length
}

5. with

with 함수는 객체를 파라미터로 받고, 람다식 내에서 해당 객체를 this 키워드로 참조할 수 있습니다. 반환값은 람다식의 마지막 구문의 결과값입니다.

val person = Person("John Doe")
with(person) {
    age = 30
    gender = "Male"
}
profile
안드로이드, 파이썬 개발자

0개의 댓글