[Swift] 6. 반복문
1. for문
- 범위나 컬렉션에서 item을 하나씩 뽑아, 중괄호 안에서 반복 실행한다.
- ⚠️ 여기서 item은 반복상수 이다.
-
즉 for in 반복상수는 매번 새로운 스택 공간에 동일한 식별자로 선언과 동시에 초기화되된다.
for item in 범위 or 컬렉션 { print(item) } for item in 1...5{ } // 첫 사이클에서 item은 아래와 같다 let item: Int = 숫자
상수를 사용하는 이유
- 반복변수 item이가 불변(let) 이므로 Stack에 저장된다.
- Stack 메모리는 매우 빠르며, var가 필요한 추가적인 메모리 할당 및 변경 비용이 필요없다.
- 만약 var를 사용하여 값을 변경할 수 있다면 Heap에 메모리를 할당해야 할 가능성이 높아지고 성능이 저하될 수 있음.
- var를 사용하면 Swift의 ARC(Auto Reference Counting)가 변경을 추적해야 할 수 도 있다. 하지만 let을 사용하면 ARC가 불필요한 참조 카운트 연산을 수행하지 않아도 되어 성능 향상이 될 수 있다.
와일드카드 패턴
- 생략을 위해 사용하는 언더바이다. (_)
-
상수나 변수로 저장할 필요없이, 생략해도 되는 경우에 사용한다.
for _ in 1...5 { } let _ = (1...10).reversed()
for문 추가예제
-
범위에서 많이 사용되는 예제
// 범위 // (1...10).reversed // stride(from: 1, to: 15, by: 2) for item in 범위 { }
2. while문
-
참과 거짓을 판단할 수 있는 문장(조건: condition) 즉 조건을 만족하는 동안 중괄호 내부를 반복 실행한다.
while 참과 거짓을 판단할 수 있는 문장 { // 참일 때 계속 실행 // 조건에 변화를 주는 문장 }
- repeat-while
-
일단 문장을 실행하고 난 뒤, 조건에 따라 반복적으로 실행할 지 여부 확인 후 반복 실행.
repeat { // 조건에 변화를 주는 문장 } while 참과 거짓을 판단할 수 있는 문장
3. for vs while
for | While |
---|---|
반복횟수를 미리 알고 있거나 컬렉션, 범위 등을 이용할 때 또는 반복상수를 사용하는 작업을 해야할 때 |
반복횟수가 미리 정해져 있지 않고 조건에 따라 바뀔 때 |
범위, 컬렉션, 문자열, stride | 조건 |
4. 제어전송문
- 반복문 내에서 쓰이는 제어전송 명령문(흐름 제어)
continue | 반복문에서 다음 주기로 넘어간다 | 중첩사용시 가장 인접한 반복문에 영향을 미친다 |
---|---|---|
Break | 반복문을 중지시킨다 | 중첩사용시 가장 인접한 반복문에 영향을 미친다 |
Leave a comment