Kotlin에서 범위 지정 함수 사용
- Kotlin의 범위 함수
- Kotlin에서 범위 함수 사용
-
Kotlin에서
also
범위 기능 사용 -
Kotlin에서
let
스코프 기능 사용 -
Kotlin에서
적용
범위 기능 사용 -
Kotlin에서
run
범위 기능 사용 -
Kotlin에서
with
스코프 기능 사용
이 기사에서는 Kotlin의 범위 기능 also
에 대해 설명합니다. Kotlin에서 사용할 수 있는 다른 범위 기능도 살펴보겠습니다.
그러나 먼저 범위 기능이 무엇인지 이해합시다.
Kotlin의 범위 함수
Kotlin에는 객체 컨텍스트에서 코드를 실행하기 위해 만들어진 많은 기능이 있습니다. 이러한 기능을 범위 기능이라고 합니다.
범위 함수는 람다 식으로 호출할 때 개체에 대한 임시 범위를 만듭니다. Kotlin에는 also
, let
, apply
, run
, with
의 5가지 범위 기능이 있습니다.
Kotlin의 모든 범위 함수는 동일한 기능을 수행하지만 다른 점은 실행 후 해당 블록 내부의 객체를 사용할 수 있는 방법입니다. 반환 값과 개체 참조를 기반으로 다섯 가지 범위 함수 중 하나를 선택해야 합니다.
아래 표는 각 범위 함수의 객체 참조 및 반환 값을 보여줍니다.
범위 기능 | 개체 참조 | 반환 값 | 확장 기능 |
---|---|---|---|
also |
it |
람다 값 | 확장 기능입니다. |
let |
this |
람다 값 | 확장 기능입니다. |
apply |
- | 람다 값 | 확장 기능이 아닙니다. |
run |
this |
람다 값 | 확장 기능이 아닙니다. |
run |
this |
컨텍스트 개체 | 확장 기능입니다. |
with |
it |
컨텍스트 개체 | 확장 기능입니다. |
Kotlin에서 범위 함수 사용
아래 예제는 Kotlin에서 범위 함수를 사용하는 방법을 보여줍니다. 이 코드에서 let
함수를 사용하여 Students 개체의 범위를 만듭니다.
data class Student(var firstName: String, var lastName: String, var age: Int, var address: String) {
fun moving(newAddress: String) { address = newAddress }
fun ageIncrease() { age++ }
}
fun main() {
Student("David", "Miller", 24, "New York").let {
println(it)
it.moving("Chicago")
it.ageIncrease()
println(it)
}
}
출력:
범위 함수는 출력에서 Student 개체를 it
으로 참조합니다. scope 함수를 사용하지 않았다면 새로운 변수를 선언하고 접근하기 위해 Student 객체의 값으로 초기화해야 했을 것입니다.
Kotlin에서 also
범위 기능 사용
위의 표에서 언급했듯이 Kotlin의 also
함수는 컨텍스트 객체를 인수(it
)로 제공합니다. 컨텍스트 객체를 함수의 인수로 취하는 작업을 수행해야 할 때 also
을 사용할 수 있습니다.
Kotlin에서 also
을 사용하는 또 다른 좋은 방법은 속성이나 기능이 아닌 객체 자체에 대한 직접적인 참조가 필요한 경우입니다. Kotlin의 also
기능을 이해하려면 아래 예를 살펴보세요.
fun main() {
val numList = mutableListOf("one", "three", "five")
numList
.also { println("Elements in the list before adding a new one: $it") }
.add("seven")
println("Elements in the list after adding a new one: " + numList)
}
출력:
Kotlin에서 let
스코프 기능 사용
Kotlin의 let
범위 함수는 컨텍스트 객체를 it
인수로 제공합니다. 반환 값은 람다 실행의 결과입니다.
let
함수를 사용하여 여러 함수를 호출하여 호출 체인의 결과를 누적할 수 있습니다.
fun main() {
val numList = mutableListOf("one", "three", "five", "seven", "nine")
val resList = numList.map { it.length }.filter { it > 3 }
println(resList)
}
출력:
[5,4,5,4]
위의 예에서 resList
를 사용하는 대신 let
범위 기능을 사용하여 람다 결과를 인쇄할 수 있습니다.
fun main() {
val numList = mutableListOf("one", "three", "five", "seven", "nine")
numList.map { it.length }.filter { it > 3 }.let{
println(it)
//We can add more functions here
}
}
출력:
[5,4,5,4]
코드에 기능이 하나만 있는 경우 람다(it
)를 메서드 참조 기호(::
)로 바꿀 수 있습니다.
fun main() {
val numList = mutableListOf("one", "three", "five", "seven", "nine")
numList.map { it.length }.filter { it > 3 }.let(::println)
}
출력:
[5,4,5,4]
Kotlin에서 적용
범위 기능 사용
Kotlin에서 apply
기능을 사용할 때(this
) 컨텍스트 개체를 수신기로 사용할 수 있습니다. 반환 값이 없는 코드 블록에 apply
기능을 사용할 수 있습니다.
가장 일반적인 사용 사례는 개체 구성 중입니다. Student 개체를 생성한 다음 구성하는 아래의 예를 고려하십시오.
data class Student(var Name: String, var age: Int = 0, var address: String = "")
fun main() {
val david = Student("David Miller").apply {
age = 24
address = "New York"
}
println(david)
}
출력:
Kotlin에서 run
범위 기능 사용
Kotlin에서 run
기능을 사용하는 동안 컨텍스트 객체를 수신자(this
)로 얻습니다. 람다 실행 결과 자체가 이 범위 함수의 반환 값입니다.
run
함수는 람다에 개체 초기화와 반환 값 계산이 모두 있을 때 가장 유용합니다.
class port(var url: String, var portNum: Int) {
fun initialRequest(): String = "Initial default request"
fun res(request: String): String = "This is the result of query '$request'"
}
fun main() {
val portService = port("https://example.kotlinlang.org", 80)
val finalResult = portService.run {
portNum = 8080
res(initialRequest() + " to port $portNum")
}
// the same code written with let() function:
val letResult = portService.let {
it.portNum = 8080
it.res(it.initialRequest() + " to port ${it.portNum}")
}
println(finalResult)
println(letResult)
}
출력:
Kotlin에서 비확장 함수로 run
을 사용할 수도 있습니다. 즉, 표현식이 필요한 명령문 블록을 실행합니다.
fun main() {
val hexNum = run {
val dig = "0-9"
val hexDig = "A-Fa-f"
val indication = "+-"
Regex("[$indication]?[$dig$hexDig]+")
}
for (match in hexNum.findAll("+139 -ABFF 79")) {
println(match.value)
}
}
출력:
+139
-ABFF
79
Kotlin에서 with
스코프 기능 사용
with
기능은 run
과 같은 비확장 기능이기도 합니다. with
함수가 있는 것은 인수로 전달되지만 수신자로 사용할 수 있다는 것입니다.
with
는 람다 결과를 제공하고 싶지 않은 컨텍스트 개체에서 함수를 호출하는 데 가장 잘 사용됩니다.
fun main() {
val num = mutableListOf("one", "three", "five", "seven")
with(num) {
println("The function 'with' is called with argument $this")
println("The function contains $size items")
}
}
출력:
Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.
LinkedIn