티스토리 뷰
While
1. while
• 조건을 만족하는 동안 본문(반복할 내용)을 반복한다.
• while(조건) {
반복할 내용
}
var i = 0
while (i < 5) {
if (i % 2 == 0) {
println("i=${i} 짝수")
} else {
println("i=${i} 홀수")
}
i++ // 이 부분 제거하면 무한 루프
}
2. do while
• 본문(반복할 내용)을 먼저 실행하고 조건이 만족하면 반복한다.
- 조건을 만족하지 못하더라도 최초 한 번은 무조건 실행한다.
• do {
반복할 내용
} while (조건)
var z = 10
do {
println("시작")
z++
} while (z < 20)
* 무한 반복
• while문은 조건을 만족하는 동안 본문이 반복 실행되기 때문에, 무한 반복을 원하지 않으면(사실 원하는 경우가 거의 없음) 본문에 while문의 조건을 벗어나도록 하는 내용이 있어야 한다.
for
• 범위의 요소들을 하나씩 진행하며 반복한다.
• for(변수명 in 범위) {
반복할 내용
}
// for문 with Range & Progression
println("for (value in 0..4)")
for (value in 0..4) {
println(value)
}
println("--------------------------------")
println("for (value in 0..5 step 2)")
for (value in 0..5 step 2) {
println(value)
}
println("--------------------------------")
println("for (value in 5 downTo 0)")
for (value in 5 downTo 0) {
println(value)
}
println("--------------------------------")
// for문 with Collection
val LIST1 = listOf<Int>(0, 5, 3, 8)
println("for (number in LIST1)")
for (number in LIST1) { // 값이 필요할 때
println(number)
}
println("--------------------------------")
println("for (i in 0 until LIST1.size)")
for (i in 0 until LIST1.size) { // 인덱스가 필요할 때
println(i)
}
println("--------------------------------")
println("for ((index, number) in LIST1.withIndex())")
for ((index, number) in LIST1.withIndex()) { // 인덱스, 값 모두 필요할 때
println("${index} | ${number}")
}
println("--------------------------------")
println("for (index in LIST1.indices)")
for (index in LIST1.indices) { // 인덱스가 필요할 때 - 명시적
println(index)
}
println("--------------------------------")
* forEach
• for와 마찬가지로 각 요소들을 하나씩 진행하며 반복한다.
• 클래스, 고차 함수, 람다 함수의 개념을 알아야 완벽히 이해할 수 있다. -> 우선 쓰는 법만 알고 있자.
println("LIST1.forEach { println(it) }")
LIST1.forEach {
println(it) // forEach는 기본으로 it 제공
}
println("--------------------------------")
println("LIST1.forEach { number -> println(number) }")
LIST1.forEach { number -> // 기본 변수 이름 it 이름 바꿀 수 있음.
println(number)
}
println("--------------------------------")
println("LIST1.forEachIndexed { index, value -> println(\"\${index} | \${value}\") }")
LIST1.forEachIndexed { index, value -> // 인덱스 필요할 때
println("${index} | ${value}")
}
println("--------------------------------")
중첩 반복문
• 반복문 안에 반복문이 있는 구조
• for (변수1 in 범위1) {
for (변수2 in 범위2) {
반복할 내용
}
}
println("중첩 반복문")
for (i in 1..3) { // i 반복문
for (j in 1..3) { // j 반복문
println("i=${i} | j=${j}")
}
}
println("--------------------------------------")
반복문 키워드 break, continue, return, label
1. break
• 가장 가까운 반복문의 반복을 끝내고 탈출
println("break")
for (i in 1..4) { // i 반복문
for (j in 1..4) { // j 반복문
if (j == 3) break // j == 3이면 j 반복문 탈출
println("i=${i} | j=${j}")
}
}
println("--------------------------------------")
2. continue
• 가장 가까운 반복문의 진행 중인 반복을 끝내고 다음 반복 진행
println("continue")
for (i in 1..4) { // i 반복문
for (j in 1..4) { // j 반복문
if (j == 3) continue // j == 3이면 반복 중단하고 다음 j=4 반복 진행
println("i=${i} | j=${j}")
}
}
println("--------------------------------------")
3. return
• 가장 가까운 함수 탈출
println("return")
fun tempFunc(): Unit {
for (i in 1..4) { // i 반복문
for (j in 1..4) { // j 반복문
if (j == 3) return // j == 3이면 함수 종료
println("i=${i} | j=${j}")
}
}
}
tempFunc()
println("--------------------------------------")
4. label
• 위의 3가지 키워드들의 탈출 지점을 정해줌.
• "가장 가까운"이 아니라 라벨로 설정한 것을 탈출
// break with label
println("break with label")
loopName@ for (i in 1..4) { // i 반복문
for (j in 1..4) { // j 반복문
if (j == 3) break@loopName // j == 3이면 loopName 반복문 탈출
println("i=${i} | j=${j}")
}
}
println("--------------------------------------")
// continue with label
println("continue with label")
loopName@ for (i in 1..4) { // i 반복문
for (j in 1..4) { // j 반복문
if (j == 3) continue@loopName // j == 3이면 loopName 반복문 중단하고 다음 loopName 반복 진행
println("i=${i} | j=${j}")
}
}
println("--------------------------------------")
* forEach에서의 return과 label
println("forEach with label")
listOf(1, 6, 3).forEach loopName@{
if(it == 6) return@loopName // it == 6이면 람다함수 return하고 다음 forEach 진행...?
println(it)
}
이 글은
패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online
강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.
'📱 Android > 💻 Kotlin' 카테고리의 다른 글
[Android/Kotlin] 12. 출력 (0) | 2022.10.07 |
---|---|
[Android/Kotlin] 11. 예외 처리 (0) | 2022.10.07 |
[Android/Kotlin] 9. 이터러블(Iterable) (0) | 2022.10.06 |
[Android/Kotlin] 8. 컬렉션(Collection) (0) | 2022.10.05 |
[Android/Kotlin] 7. 배열 (0) | 2022.10.04 |