반응형
forEach에서 return시 원하는 동작대로 되지 않아 작성하였습니다.
람다 안에서 return시 어떻게 되는지 살펴보자.
람다 안의 return문 : 람다를 둘러싼 함수로부터 반환
람다 안에서 return을 사용하면 람다뿐만 아니라 그 람다를 호출하는 함수의 실행을 끝내고 반환됩니다.
자기 자신을 둘러싸고 있는 블록보다 더 바깥에 있는 블록을 반환하는 return 문을 넌로컬(non-local) return 이라고 부릅니다.
-> onClick함수가 끝난다.
return이 바깥쪽 함수를 반환시킬 수 있는 경우는 람다를 인자로 받는 함수가 인라인 함수인 경우뿐입니다.
인라이닝 되지 않는 함수에 전달되는 람다 안에서는 return을 사용할 수 없다.
-> 람다를 변수에 저장하거나 바깥쪽 함수를 반환한 뒤에 람다가 호출 될수도 있기 때문
람다로부터 반환 : 레이블(label)을 사용한 return
람다 안에서 로컬 return은 for 루프의 break, continue와 비슷한 역할을 합니다.
로컬 return : 람다의 실행을 끝내고 코드 실행을 계속 이어갑니다.
로컬 return, 넌로컬 return 구분은 lable을 사용한다.
로컬 return (continue 처럼 동작)
return@forEach도 같음
로컬 return (break 처럼 동작)
label달린 run 함수로 감싼다.
참조 :
https://0391kjy.tistory.com/66
https://kotlinlang.org/docs/returns.html#return-to-labels
반응형
'코틀린 & Java' 카테고리의 다른 글
[kotlin] mapTo (0) | 2023.05.18 |
---|---|
[Kotlin] Open Class란? (0) | 2022.10.25 |
[Kotlin] Object Class란? (0) | 2022.10.25 |
[Kotlin] Data Class란? (0) | 2022.10.25 |
[Android] Looper에 대해 알아보자 (0) | 2022.10.24 |