[iOS] App Development

While Loops / For Loops / Iterating Collections / Nested Loops

ddgoori 2021. 3. 5. 16:56

 

While Loops

 

그냥 while 문은 기존에 컨디션을 체크하고 들어간다.

while i < 10 {
	print(i)
    i += 1
}

근데 조건을 체크하지 않고 최소 한번은 실행시키고 싶을 때는

Repeat While Loop를 사용하면 된다. 다른 곳에서는 Do while문임

 

print("ddd")

i = 1
repeat {
	print(i)
    print += 1
} while i < 10

둘의 차이는 10으로 먼저 i를 설정해보면 알 수 있다. 

후자는 조건문 안에 있는 loop를 먼저 실행하고 하기 때문에 실행하게 된다 .

 

For Loops

 

countable range

//includes 0 and 5
let closeRange = 0...5

//5 not included
let halfOpenRange = 0...<5

//for loops는 내가 설정한 횟수에 영향을 받음

i 는 이 조건문에서만 되고 파괴됨
i는 첫번째 value로 자동 셋팅 된다.

var sum = 0
let count = 10
for i in 1...count {
	sum += i
}

print(sum)

// roar 10번 print하라는 말! count가 10이니깐 1부터 10까지
for _ in 1...count {
	print("roar") // _를 적으면 i가 뭐든 신경안쓴다는 것 
}

// count가 10이기 때문에 아래 조건문이 작동하지 않음(count가 100일때 실행해라고하니깐)
// 카운트트가 100 넘으면 이 Loop 반복문을 실행하고 싶어 -> where를 삽입해라
for _ in 1...count where count > 100 {
	print("roar")
}

//홀수일때만 프린트하라!
for i in 1...count where i % 2 == 1 {
	print("\(i) is an odd number.")

}

 

Iterating Collections

 

for temp in hourltTemps {
	//loops code
}

// loops는 데이터를 활용하기 좋다.
// array에 있는 모든 아이템을 활용하고싶다면 for loops가 좋다.

let daysOfTheWeeks: [String] = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
let poolTemperature: [Int] = ["78", "81", "74", "80", "79", "83", "84"]

// series of property : array의 count
for i in 0...<daysOfTheWeeks.count {
	print("\(daysOfTheWeeks[i]: \(poolTemperature))")
}

// temperature가 좋은 날에만 print하고 싶을 때 (ex. 80도 이상일 떄)
for i in 0..<daysOfTheWeeks.count where poolTemperatire[i] >= 80 {
	print("\(daysOfTheWeeks[i]: \(poolTemperature))")
}

var sum = 0
//For each temperature in poolTemperature, 'temperature' will be the value in each element
// 루프를 도는데 그 루프마다 temperature가 poolTemperature라는 배열에 있는 요소들이다.
// 이 loops의 장점은 poolTemperature의 배열 요소에 접근하기 위한 인덱스가 필요가 없구 몇개의 요소가 있는지도 
// 알 필요가 없고, 그냥 스위프트한테 "야 poolTemeperature 안에 있는 모든 요소를 다 돌아라 하는 것이다.
for temperature in poolTemperature {
	sum += temperature
}

sum / poolTemperature.count

 

Nested Loops and Early Exit

 

Friday Element를 만나면 "I'm in love"를 프린트 하고, continue statement가 -> 야 스위프트야 그 코드는 그만하고 다음 iteration 돌아라

break 는 stops the loop entirely (Thursday가 되면 iteration이 아예 멈추고 해당 iteration 안에 있는 다음 것 진행하지 않음)

 

continue 는 stop the current iteration and then goes back to looping

지금 iteration은 그만둬도 다음 looping은 계속해라. 

 

room 이 1이면 프린트하지 말어라

iteration 안에 continue가 있으면 해당 interation을 건너뛰고 다음 itertaion으로 간다.

즉 room == 1 일경우에 print를 해야하는데 그 전에 continue가 있었으니 그 iteration은 건너뛰어지고

다음인 room == 2 인 경우로 가게되는 것이다. room == 2이면 continue가 있는 조건문에 속하지 않으니

print를 하게 되는 것이다.

 

이곳에 있는 continue state은 inner loop에만 영향을 준다.

 

이때, 만약 continue 자리에 break가 있다면 해당 조건문이 있는 iteration 자체가 멈춰버린다.

 

 

바깥 Loops에서 조건에 만족하면 continue해버리면 그 iteration 차를 아예 건너뛰어버림 근데 그 안에 다르 for 문이 있어도 다 건너뛰어짐. 그 Loop자체를 건너뛰니깐. 그래서 13 번째는 아예 건너뛰어지고 다음거부터 실행됨

원래라면 12층의 룸 3번째부터 안나왔으면 좋겠는데. 그냥 room loop안에서 선언하면. 컨티뉴하면 그 loop만 건너뛰니깐

12-4도 출력되게 됨. continue == 지금 iteration은 그만두고 다음 iteration은 계속해라는 것이기 때문에 12 && 3일 때는

그만두지만 12 && 4일때는 계속하게됨

 

그래서 12 3일 때 아예 그만두려면 이제  12 loop가 돌아가는 곳에서 continue를 해야 13으로 넘어가기 때문에

바깥 loop에서 continue를 해야한다.

 

 

 

floor_loop을 컨티뉴해라!

 

 

'[iOS] App Development' 카테고리의 다른 글

Sets  (0) 2021.03.08
[iOS/Swifit] Dictionary 사용법  (0) 2021.03.08
[0] Swift Fundamentals :  (0) 2021.02.16
[옵셔널]  (0) 2020.12.16
읽어보기 iOS  (0) 2020.12.02