루프 안에서 점프 가능한 break와 continue
오늘의 아톰은 break와 continue로 자바에서 학습했을 때 반복 루프에서 많이 사용했다.
코틀린에서는 과연 어떻게 쓰이고 어떻게 다른지 알아보자
[ break & continue ]
: 코틀린에서 break와 continue를 사용해 제한적인 점프를 제공
: for / while / do-while 루프 요소 안에서만 사용 가능
: break는 루프의 끝으로만, continue는 루프의 시작 위치로만 점프 가능
: 실전에서는 자주 사용하지 않음
: 루프 전체나 루프 본문을 별도의 함수로 추출하면 break나 continue를 리턴으로 대체 가능 (따라서 많이 사용하지 않음)
[ for 루프 ]
import atomictest.eq
fun main() {
val nums = m니tableListOf(O)
for(i in 4 until 100 step 4) {
if (i = 8) continue // continue 다음에 오는 코드는 실행 x
if (i = 40) break
nums.add(i)
}
nums eq "[0, 4, 12, 16, 20, 24, 28, 32, 3이“ )
: for 루프 본문에서 continue 다음에 오는 코드는 실행되지 않음
[ while 루프 ]
import atomictest.eq
fun main() {
val nums = mutableListOf(0)
var i = 0
while (i < 100) {
i += 4
if (i = 8) continue
if (i = 40) break
nums.add(i)
}
nums eq "[0, 4, 12, 16, 20, 24, 28, 32, 36]"
: for문과 동일하게 break와 continue의 역할은 동일
[ 레이블 ]
레이블
: break와 continue가 자신을 둘러싼 여러 루프의 경계 중 한 군데로 점프할 수 있음
: 맨 안쪽 루프의 영역에 제한되지 않고 점프가 가능함
: 레이블@와 같이 레이블 이름 다음에 @를 사용해 레이블을 붙일 수 있음
import atomictest.eq
fun main() {
val strings = mutableListOf<String>()
outer@ for (c in 'a'..'e') {
for (i in 1..9) {
if (i = 5) continue@outer // 자신을 포함하는 for문이 아닌 레이블 루프를 찾아가 루프 실행
if ("$c$i" = "c3") break@outer
strings.add("$c$i")
}
}
strings eq list0f(“a1", ”a2”, ”a3”, ”a4”, Hb1H, “b2”, “b3”, “b4”, “c1“, ”c2")
}
'공부 자료 > 코틀린[Kotlin]' 카테고리의 다른 글
[Atomic 45] 람다의 중요성 (0) | 2024.02.21 |
---|---|
[Atomic 44] 람다 (0) | 2024.02.21 |
[Atomic 42] 확장 프로퍼티 (0) | 2024.02.21 |
[Atomic 41] 제네릭스 소개 (0) | 2024.02.21 |
[Atomic 40] 확장 함수와 널이 될 수 있는 타입(라이브러리 함수) (0) | 2024.02.20 |