📒 Study/🚩 Swift

[ Swift ] 반복문 - For문

EarthSea 2024. 3. 7. 20:59

 

1. 반복문


 

1) for문

: 범위 or 컬렉션에서 item을 한개씩 뽑아, 중괄호 안에서 반복 실행함

for item in 범위 or 컬렉션 {
    //code
}

 

for index in 1...5 {
    print("For문 출력해보기: \\(index)")
}

/* 출력 :
For문 출력해보기: 1
For문 출력해보기: 2
For문 출력해보기: 3
For문 출력해보기: 4
For문 출력해보기: 5
*/

 

  • 스트링 인터폴레이션을 사용한 반복문 출력
for index in 1...4 {
    print("\\(index)에 5를 곱하면 \\(index * 5)")
}

/* 출력 :
1에 5를 곱하면 5
2에 5를 곱하면 10
3에 5를 곱하면 15
4에 5를 곱하면 20
*/

 

 

배열 등 컬렉션 타입에서도 사용 가능

let list = ["Swift", "Programming", "Language"]

for str in list {
    print(str)
}

/* 출력 :
Swift
Programming
Language
*/

 

 

문자열에서도 사용 가능

: 문자열에서 각 문자를 차례 차례 한개씩 뽑아서 중괄호 안에서 사용

for chr in "Hello" {
   print(chr, terminator: " ")
}

/*
출력 : H e l l o 
*/

→ 이때 chr의 타입은 character 타입이다.

 

💡 print(chr, terminator: " ") : 개행하지 않고, 한 칸 띄우는 방식으로 출력

 

 

딕셔너리에서도 사용 가능

let students = ["Bae":12, "Chio":1, "Kim":3]

for (key, value) in students{
    print("\\(key)는 공부를 \\(value)등 했어")
}

/* 출력 :
 Chio는 공부를 1등 했어
 Bae는 공부를 12등 했어
 Kim는 공부를 3등 했어
 */

→ 딕셔너리를 for문에 넣으면 튜플로 key값과 value 값을 분리할 수 있음

 

 

특정한 함수 활용 가능

  • reversed : 숫자를 역순으로 정렬하는 함수
for number in (1...5).reversed() {
    print(number)
}

/* 결과 :
 4
 3
 2
 1
 */

 

  • stride : 숫자를 특정간격(띄엄띄엄)으로 범위를 생성하는 함수 ( stride : 성큼성큼 걷다 )
for number in stride(from: 1, to: 15, by: 2) {
    print(number)
}

/* 출력 :
 1
 3
 5
 7
 9
 11
 13
 */

to 는 마지막 숫자를 포함하지 않는다.

→ 1 ~ 14까지 2단계씩 증가

 

for number in stride(from: 1, through: 15, by: 2) {
    print(number)
}

through 는 마지막 숫자를 포함한다.

→ 1 ~ 15까지 2단계씩 증가

 

💡 stride(from: to: by) : from에서부터 to값 전까지 by만큼 증가하기
💡 stride(from: through: by) : from에서부터 from까지 by만큼 증가하기 

 

 

 


 

 

2) for문 사용시 주의점

 

for문의 임시 상수

for item in 1...5 {
	print(item)
}
  • 즉, item은 for문의 주기를 한바퀴 돌때마다 let item 이라는 상수에 값을 대입하는 것이다.
  • 만약 임시 상수를 반복문안에서 변경하고 싶다면, 새로운 변수로 선언한 후 변경해야한다.
for item in 1...5 {
    //item += 1 error!
    print(item)
}

for item in 1...5 {
    var a = item
    a += 1
    print(a)
}

/* 출력 :
2
3
4
5
6
*/

print(item) //error
  • for문에서 선언하는 변수는 for문 내에서만 사용이 가능(Scope와 관련)
    • 반복문의 외부에서 for문 안에서 선언하는 변수를 접근 할 수 없다.
    • for문의 외부에서 선언한 변수는 for문의 내부에서 접근 가능하다.