---
# System prepended metadata

title: Control Flow 1

---

# Control Flow 1
## For-in
1. 딕셔너리를 for문에 돌리면 (key, value)값을 받아올 수 있는데, 이름을 할당해 줄 수 있다.
```swift
let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
    print("\(animalName)s have \(legCount) legs")
}
```
2. for문에서 index는 암묵적으로 상수로 할당이 된다. (let 없이도 암묵적 선언이 됨)
3. for문에서 stride로 inverval로 for문을 돌릴 수 있다.
```swift
let minuteInterval = 5
for tickMark in stride(from: 0, to: minutes, by: minuteInterval) {
    // render the tick mark every 5 minutes (0, 5, 10, 15 ... 45, 50, 55)
}
```
## While Loops
1. - while : 시작에서 조건 체크
    - reapt-while : 끝에서 조건 체크
```swift
repeat {
    // move up or down for a snake or ladder
    square += board[square]
    // roll the dice
    diceRoll += 1
    if diceRoll == 7 { diceRoll = 1 }
    // move by the rolled amount
    square += diceRoll
} while square < finalSquare
```
2. 배열에서 반복해서 값을 넣어주는 법
```swift
let finalSquare = 25
var board = [Int](repeating: 0, count: finalSquare + 1)
```
3. repeat-while이 while보다 효율적일 때가 있다.

### Switch
1. 공식문서를 읽고 다시 구현한 가위바위보
2. 튜플로
```swift
let hands = (userHand, computerHand)
    switch hands {
    case let (user, computer) where user == computer:
        print("비겼습니다!")
        playRockScissorPaper()
    case (.scissor, .paper), (.paper, .rock), (.rock, .scissor) :
        print("이겼습니다!")
    default:
        print("졌습니다!")
    }
```

2. 스위치의 경우 if보다 복잡한 조건과 다양한 경우의 수가 있을 때 유용하게 쓰인다. 
3. where절이 유용하게 쓰일 수 있다.
4. value binding도 마찬가지





























