Kotlin의 Scope 함수 마스터하기: let, run, with, apply 및 also

May 07 2023
소개 Kotlin은 현대적이고 표현력이 풍부하며 간결한 구문을 제공하여 Android 앱 개발 및 그 이상을 위한 인기 있는 프로그래밍 언어가 되었습니다. Kotlin의 강력한 기능 중 하나는 코드를 구조화하고 단순화할 수 있는 범위 기능입니다.
이미지 출처

소개

Kotlin은 현대적이고 표현력이 풍부하며 간결한 구문을 제공하여 Android 앱 개발 및 그 이상을 위한 인기 있는 프로그래밍 언어가 되었습니다. Kotlin의 강력한 기능 중 하나는 코드를 구조화하고 단순화할 수 있는 범위 기능입니다. 이 블로그 게시물에서는 Kotlin에서 가장 일반적으로 사용되는 5가지 범위 함수인 let, run, with, apply 및 also에 대해 자세히 설명합니다. 사용법을 설명하고 코드 예제를 제공하며 이들 간의 차이점에 대해 논의합니다.

허락하다

'let' 함수는 모든 객체에 적용할 수 있는 확장 함수입니다. 개체를 컨텍스트로 사용하여 코드 블록을 실행하고 블록 내 마지막 표현식의 결과를 반환합니다. 'let'은 nullable 개체에 대한 작업을 수행하고 해당 값을 변환하는 데 유용합니다.

예:

val name: String? = "John Doe"

val length = name?.let {
    println("Name is $it")
    it.length
} ?: 0

println("Name length: $length")

달리다

'run' 함수는 'let'과 유사하지만 확장 함수가 아니라 개체 자체에서 호출됩니다. 개체를 컨텍스트로 사용하여 코드 블록을 실행하고 블록 내 마지막 표현식의 결과를 반환합니다.

예:

val numbers = mutableListOf(1, 2, 3, 4, 5)

val sum = numbers.run {
    add(6)
    add(7)
    sum()
}

println("Sum: $sum")

~와 함께

'with'는 'run'과 비슷하지만 확장 기능이 아닙니다. 대신 객체를 첫 번째 인수로 사용하고 코드 블록을 두 번째 인수로 사용합니다. 개체를 컨텍스트로 사용하여 코드 블록을 실행하고 블록 내 마지막 표현식의 결과를 반환합니다.

예:

val person = Person("John Doe", 30)

val info = with(person) {
    println("Name: $name, Age: $age")
    "Name: $name, Age: $age"
}

println("Person Info: $info")

적용하다

'apply'는 모든 객체에 적용할 수 있는 확장 기능입니다. 개체를 컨텍스트로 사용하여 코드 블록을 실행하고 개체 자체를 반환합니다. '적용'은 개체의 속성을 구성하고 여러 호출을 함께 연결하는 데 유용합니다.

예:

val person = Person("John Doe", 30).apply {
    age = 31
    name = "Jane Doe"
}

println("Updated person: Name - ${person.name}, Age - ${person.age}")

또한

'또한'은 '적용'과 유사하지만 객체 자체가 아닌 블록의 결과를 반환합니다. 모든 객체에 적용할 수 있는 확장 기능으로 객체에 부작용이나 추가 동작을 수행할 때 유용합니다.

예:

val updatedName = "Jane Doe".also {
    println("Updating name to $it")
}

val person = Person("John Doe", 30).apply {
    age = 31
    name = updatedName
}

println("Updated person: Name - ${person.name}, Age - ${person.age}")

결론

Kotlin의 범위 함수, 즉 let, run, with, apply 및 또한 더 깨끗하고 읽기 쉬운 코드를 작성하는 데 도움이 될 수 있습니다. 차이점과 사용 사례를 이해하면 잠재력을 최대한 활용하고 Kotlin 코드를 더 효율적으로 만들 수 있습니다. 이 블로그 게시물의 예제는 Kotlin 프로젝트에서 이러한 강력한 기능을 사용하는 데 도움이 될 것입니다.

  • 범위 함수에 대한 Kotlin 설명서
  • 이미지 출처