같은 코드를 특정한 범위 내로 반복하여 실행할 경우 사용하는 문법이다.
for <#item#> in <#collection#> { <#statements#> }
위와 같은 형태이며 item의 부분은 와일드카드를 넣어 생략 가능하다. 배열이나 day3에서 공부했던 CaseItetable enum을 collection 부분에 넣어서 사용할 수 있다. 또한 i...j와 같은 형태로 i에서 j까지라는 반복을 실행할 수도 있다. collection의 요소는 item에 들어가게 되어 반복 코드에서 사용 가능하다.
for _ in 0...2 { // Range 부분은 ...을 통해 n ~ m까지 라는 뜻으로 적어주면 된다.
print("just loop") // 코드에서 변수를 쓰지 않기 때문에 와일드카드로 생략
}
/*
just loop
just loop
just loop
*/
enum Elemental: CaseIterable { //CaseIterable을 명시
case fire
case water
case wind
}
for elemental in Elemental.allCases { // CaseIterable을 통해 사용가능해진 .allCases
print("I can do \(elemental) magic") //elemental에 매 반복마다 컬렉션의 요소가 들어감
}
/*
I can do fire magic
I can do water magic
I can do wind magic
*/
반복문에서 조건을 추가하여 특정 요소에 대해서만 코드를 실행하고 싶은 경우 반복문 내에 if 등의 조건문을 추가하는 대신 where을 사용하여 더욱 간결하게 코드를 작성할 수 있다.
for elemental in Elemental.allCases where elemental == .fire {
print("\(elemental) is so dangerous")
}
//아래의 코드를 위와 같이 간결하게 작성 가능함
for elemental in Elemental.allCases {
if elemental == .fire {
print("\(elemental) is so dangerous")
}
}
/*
fire is so dangerous
fire is so dangerous
*/