Post

스위프트의 흐름 제어

스위프트의 흐름 제어

실행되는 프로그램의 흐름을 통제하는 것이므로 제어 흐름이라고 한다 제어 흐름은 코드를 몇 번 실행할지에 대한 반복 제어와 어떤 코드를 실행할지에 대한 조건부 제어 흐름으로 나뉜다

for-in 구문

1
2
3
for index in 1...7 {
  print("hello world!")
}

실행 결과 hello world!가 7번 출력된다 만약 참조체 위 예시의 index같은 것이 필요하지 않다면 참조체를 _로 사용할 수 있다

 

while 구문

for 구문은 몇번 반복을 해야할지 알고 있을때 사용할 수 있다 반복 횟수를 모를 때 while 구문을 사용한다

1
2
3
4
var count:Int = 0
while count < 20 {
  count += 1
}

 

repeat-while 구문

c언어의 do while 구문의 대체 역할이라고 보면 된다

1
2
3
4
var count: Int = 20;
repeat {
  count -= 1
} while (count > 5)

 

반복문 중간 사용 구문

break

If 구문과 같이 사용해서 반복문을 if조건 만족시 탈줄시킨다 현재 진행중인(제일 가까운) 반복문이 중단된다

1
2
3
4
5
6
7
8
9
10
for i in 1...10 {
    for j in 1...10 {
        if j == 2{
            break
        } else {
            let n = i * j
            print ("\(i) * \(j) is \(i * j)")
        }
    }
} //: x * 1 만 결과로 출력된다

continue

위 코드에서는 2일때 반복문을 중단시켜서 x * 2이후는 모두 출력이 되지 않았다 continue를 사용하면 2만 빼고 나머지를 모두 출력할 수 있다 해당 반복문을 건너뛰고 뒤 반복문 실행한다

1
2
3
4
5
6
7
8
9
10
for i in 1...10 {
    for j in 1...10 {
        if j == 2{
            continue //: 변경
        } else {
            let n = i * j
            print ("\(i) * \(j) is \(i * j)")
        }
    }
}

 

if 구문

1
2
3
4
5
6
7
8
9
10
11
let x = 300

if x == 10 {
    print("x is 10")
} else if x == 9 {
    print("x is 9")
} else if x == 8 {
    print("x is 8")
} else {
    print("not")
} //: not을 출력한다

 

guard 구문

guard는 if문과 유사하게 불리언 표현식을 포함하고 ture일때만 guard구문이 실행된다 guard구문은 false일때 실행할 else구문이 반드시 필요하다 else 구문은 return, break, continue 또는 throw(현재의 코드 흐름에서 빠져나가는 구문)을 포함한다 또는 자기 자신을 반환하지 않는 다은 함수나 메서드를 호출할 수 있다

1
2
3
4
5
6
7
8
9
10
func multiplyByTen(value: Int?) {
    guard let number = value, number < 10 else {
        print ("Number is too high") //: false일때 실행
        return //: 반환
}
    let result = number * 10 //: true일때 실행
    print(result)
}
multiplyByTen(value: 5)
multiplyByTen(value: 10)

50과 Number is too high를 순서대로 출력한다

여기서 옵셔널 value를 언래핑하기 위해 옵셔널 바인딩을 통해서 하고 그 값이 10보다 작은지 판단한다 10보다 작다면 곱하기 10한것을 출력한다 if문과 다를게 없어 보이지만 guard구문에서 언래핑된 number는 guard밖에서 유효하다 if문 내에서 언래핑한 변수는 if문 밖에서 사용할 수 없다

This post is licensed under CC BY 4.0 by the author.