본문 바로가기

Mobile/Swift

[Swift - 문법] 반복문(for-in, while)

반응형

1. for-in

for [임시 상수] in [Sequence Item] {
    [실행 코드]
}

(1) 기본 사용 코드

for i in 0...2 {
    print(i)
}

// 0
// 1
// 2

(2) if문 사용

for i in 0...5 {
    if i.isMultiple(of: 2) {
        print(i)
    }
    
    print("\(i) == 홀수")
}

"""
0
0 == 홀수
1 == 홀수
2
2 == 홀수
3 == 홀수
4
4 == 홀수
5 == 홀수
"""

-----------------------------------------------------------------

for i in 0...5 {
    if i.isMultiple(of: 2) {
        print(i)
        continue // continue 키워드를 사용하면 바로 다음 시퀀스로 건너뛴다.
    }
    
    print("\(i) == 홀수")
}

"""
0
1 == 홀수
2
3 == 홀수
4
5 == 홀수
"""

(3) 문자열 사용

let ironman: String = "I'm Ironman"

for i in ironman {
    print(i)
}
"""
I
'
m
 
I
r
o
n
m
a
n
"""

(4) 시퀀스에 해당하는 값이 필요없는 경우

// 시퀀스에 해당하는 값이 필요없는 경우
var result: Int = 100
for _ in 1...3 {
    result += 10
}

print("100에 10을 3번 더하면 \(result) 입니다.")
// 100에 10을 3번 더하면 130 입니다.

(5) Dictionary 타입에 사용

let Heroes: [String: String] = ["Ironman": "아이언맨", "Captain": "캡틴", "Thor": "토르"]

for tuple in Heroes {
    print(tuple)
}

"""
(key: "Thor", value: "토르")
(key: "Ironman", value: "아이언맨")
(key: "Captain", value: "캡틴")
"""

for (key, value) in Heroes {
    print("\(key) 의 한글 이름은 \(value) 입니다.")
}

"""
Thor 의 한글 이름은 토르 입니다.
Ironman 의 한글 이름은 아이언맨 입니다.
Captain 의 한글 이름은 캡틴 입니다.
"""

2. while

while 반복 구문도 다른 언어들의 while 문과 다르지 않습니다. 특정 조건이 성립하는 한 블록 내부의 코드를 반복해서 실행합니다.

var heroes: [String] = ["ironman", "hulk", "captain", "thor"]

while heroes.isEmpty == false {
    print("Good bye \(heroes.removeFirst())")
}
"""
Good bye ironman
Good bye hulk
Good bye captain
Good bye thor
"""

*repeat-while 구문

repeat-while 구문은 다른 언어의 do-while 구문과 동일합니다. 최초 실행시 repeat 구문을 실행하고 while 구문의 조건이 맞으면 반복 실행하는 방식입니다.

var heroes: [String] = ["ironman", "hulk", "captain", "thor"]

repeat {
    print("Good by \(heroes.removeFirst())")
} while heroes.isEmpty == false

"""
Good bye ironman
Good bye hulk
Good bye captain
Good bye thor
"""

구문 이름

반복문을 작성하다 보면 종종 반복문을 중첩적으로 사용하게 됩니다. 그럴 경우 continue 와 break 키워드를 사용할 때 어떤 반복문이 continue 되고 break 되는지 애매해 실수가 발생할 수 있습니다. 그런 경우를 대비해 반복문에 이름을 붙여줄 수 있습니다.

var heroes: [String] = ["ironman", "hulk", "captain", "thor"]

heroesLoop: for hero in heroes {
    if hero == "captain" {
        break heroesLoop
    }
    
    print("\(hero)")
}

[출처: 야곰 SWIFT 스위프트 프로그래밍 (swift 5)]

반응형