Swift에서 루프를 작성하는 다양한 방법이 있지만 기본 메커니즘은 동일합니다. 조건이 거짓으로 평가 될 때까지 일부 코드를 반복적으로 실행합니다.
let count = 1...10
for number in count {
print("숫자는 \(number) 입니다")
}
let albums = ["다이너마이트", "디오니소스", "불타오르네"]
for album in albums {
print("\(album)은 BTS의 노래입니다.")
}
//다이너마이트은 BTS의 노래입니다.
//디오니소스은 BTS의 노래입니다.
//불타오르네은 BTS의 노래입니다.
for 루프가 제공하는 상수를 사용하지 않는 경우 swift가 불필요한 값을 생성하지 않도록 _을 사용해야함
for _in 1...5 {
print("play")
}
var numbers = [1, 2, 3, 4, 5, 6]
for number in numbers {
if numbers % 2 = 0 {
print(number)
}
} // 2, 4, 6
var songs = {"Know Me Too Well", "Medicne", "Start Over Again"}
for song in songs {
print("가장 좋아하는 노래는 "\(song)입니다")
}
var people = ["players", "haters", "heart-breakers", "fakers"]
var action = ["play", "hate", "break", "fake"]
for i in 0...3 {
print("\(people[i])gonna\(actions[i]))")
}
for i in 0..<people.count {
print("\(people[i])gonna\(actions[i]))"
}
let names = ["철수", "영희", "민지", "민수", "주희"]
for name in names {
print("\(name)는 과자를 가지고 있습니다!")
}
//철수는 과자를 가지고 있습니다!
//영희는 과자를 가지고 있습니다!
//민지는 과자를 가지고 있습니다!
//민수는 과자를 가지고 있습니다!
//주희는 과자를 가지고 있습니다!
ⓛ Array
let nums: [Int] = [1, 2, 3, 4]
for num in nums {
print(num) //1 2 3 4
}
② Dictionary
let dict:[String : String] = ["A" : "Apple", "B", "Banana", "C" : "Cherry"]
for (key, value) in dict {
print("(\(key) : \(value))")
}
for element in dict {
print("\(element.key) : \(element.value))")
}
key 또는 value만 반복하고 싶다면
for key in dict.keys {
print(key) // C B A
}
for value in dict.value.sorted() {
print(value) // Apple Banana Cherry
}
③ Set
let nums: set<Int> = [1, 2, 3, 4]
for num in nums {
print(num) // 3 2 4 1
}
ⓛ Array
let nums : [Int] = [1, 2, 3, 4]
nums.forEach {
print($0)
} // 1 2 3 4
nums.enumerated().forEach {
print("(index: \($0) num: \($1))")
}
nums.indices.forEach {
print("(index: \($0) num: \(num[$0]))")
}
let dict: [String : String] = ["A" : "Apple", "B" : "Banana", "C" : "Cherry"]
dict.forEach {
print("(($0.key) : ($0.value))") // (B : Banana) (C : Cherry) (A : Apple)
}
dict.forEach { (key, value) in
print("((key) : (value))") // (C : Cherry) (A : Apple) (B : Banana)
}
dict.keys.forEach {
print($0) // B C A
}
dict.values.sorted().forEach {
print($0) // Apple Banana Cherry
}
② Dictionary
let dict:[String : String] = ["A" : "Apple", "B", "Banana", "C" : "Cherry"]
dict.forEach {
print("(\($0.key): \($0.value))")} // (B : Banana) (C : Cherry) (A : Apple)
dict.forEach { (key, value) in
print("(\(key) : \(value))") // (C : Cherry) (A : Apple) (B : Banana)
}
dict.keys.forEach {
print($0) // B C A
}
dict.values.sorted().forEach {
print($0) // Apple Banana Cherry
}
③ Set
let nums: set<Int> = [1, 2, 3, 4]
nums.forEach {
print($0)
}
for num in nums {
break
continue
}
nums.forEach {
break //"ERROR"
continue //"ERROR"
}
func printForIn() {
let nums = [1, 2, 3]
for num in nums {
print(num)
return
}
}
func printForEach() {
let nums = [1, 2, 3]
nums.forEach {
print($0)
return
}
}
let numbers = [1, 2, 3, 4, 5]
var random: [Int]
repeat {
random = numbers.shuffled()
} while random == numbers
//랜덤값 무자기 출력
//3, 2, 4, 5, 1
let scores = [1, 8, 4, 3, 0, 5, 2]
var count = 0
//for문으로 scores배열을 하나씩 쓰고 카운트를 + 1 한다.
for score in scores {
//만약 score가 0이면 break된다.
if score == 0 {
break
}
count += 1
}
print("You had \(count) scores before you got 0.")
//You had 3 scores before you got 0
for name in ["John", "Paul", "George"] {
break
print("Welcome, \(name)!")
} //배열을 프린트 하기도 전에 break된다.
outerLoop: for i in 1...10 {
for j in 1...10 {
let product = i * j
print ("\(i) * \(j) is \(product)")
//만약 product가 50이면 루프에서 빠져나온다.
if product == 50 {
print("구구단 그만!")
break outerLoop
}
}
}
/* ... 5 * 6 is 30
5 * 7 is 35
5 * 8 is 40
5 * 9 is 45
5 * 10 is 50
구구단 그만! */
for i in 1...10 {
if i % 2 == 1 { //이 조건은 홀수인 1,3,5,7,9 이지만
continue //continue를 사용하여 위에 조건을 건너뜀
}
print(i)
}
//2,4,6,8,10