return
가장 가까운 enclosing function을 return 시킨다
val arr = arrayListOf("A","B","C","D","E","F","G")
fun checkForEach() {
arr.forEach {
if(it == "D") return
}
println("찍힐까요 안 찍힐까요?")
}
위의 예제를 실행하면 어떤 결과가 나타날까?
더보기
checkForEach()를 return 시키므로, println문이 찍히지 않는다
함수내의 lambda식을 return하고 싶다면?
return@label
특정 label의 lambda식을 return 한다
val arr = arrayListOf("A","B","C","D","E","F","G")
fun checkForEach() {
arr.forEach {
if(it == "D") return@forEach
}
println("찍힐까요 안 찍힐까요?")
}
위의 예제를 실행하면 어떤 결과가 나타날까?
더보기
forEach문만 return 되었으므로, print문이 찍히게 된다
🔍 그래서 이게 왜?
forEach는 람다식
람다식에서는 continue, break를 사용할 수 없다
하지만, 예제에서의 return은 continue와 같은 역할을 한다
val arr = arrayListOf("A","B","C","D","E","F","G")
fun checkForEachWithRun() {
var cnt = 0
arr.forEach {
++cnt
if (it == "D") return@forEach
println("몇번 실행될까 : $cnt")
}
}
🔍 return을 break처럼 쓰려면 -> run label@ 사용
fun checkForEachWithRun() {
var cnt = 0
run loop@ {
arr.forEach {
++cnt
if (it == "D") return@loop
println("몇번 실행될까 : $cnt")
}
}
}
SCOPE 함수 중 run을 사용해서 forEach를 묶고 run 함수의 label을 리턴하면 된다
'💡 Kotlin' 카테고리의 다른 글
[Activity] LaunchMode (0) | 2023.06.15 |
---|---|
[Kotlin] Collection 함수 - (1) 원소 변환 및 필터, 특정원소 검색 (0) | 2023.01.12 |
[Kotlin] mutable Collection (0) | 2023.01.08 |
[Kotlin] Collection (List, Set, Map) (0) | 2023.01.03 |
[kotlin] Pair (0) | 2023.01.02 |