제어문이 크게 차이는 없지만 생소하기는 하니 플레이 그라운드를 한 번 실행해서 한 번씩 적어본다.
1. for 문
for var i=0; i<10; i++ {
print("value of i is \(i)");
}
for index in 1...10 {
print("index is \(index)")
}
이런 형태를 for-in 문이라고 한다. 어레이 형태의 데이터 셋에서 하나씩 비교하여 값을 읽어들일 수 있다.
var count = 0;
for _ in 1...10 {
count++;
}
언더바(_)는 반복문에서 참조 변수가 필요하지 않을 경우 넣을 수 있다.
2. while 문
var cnt = 0;
while cnt < 100 {
++cnt;
}
3. repeat-while 문
var i = 10;
repeat {
--i;
}
while (i>0)
응? do-while 문이 안보이네...플레이 그라운드에서 자동으로 repeat-while 문으로 변경된다.
반복문의 제어를 위해서 break와 continue 도 동일하게 적용된다.
4. if 문
var a = 10;
if a>9 {
print("9보다 크다.")
}
if a<=9 {
print("9보다 작거나 같다.")
}
else if a>10 {
print("9보다 크다.")
}
if #available(iOS 9, OSX 10.10, *) {
// Use iOS 9 APIs on iOS, and use OS X v10.10 APIs on OS X
} else {
// Fall back to earlier iOS and OS X APIs
}
var j = 10
switch (j) {
case 10:
print("값은 10");
case 20:
print("값은 20");
default:
print("10도 20도 아니다.");
}
switch (j) {
case 1...10:
print("값은 1부터 10 사이");
case 11...20:
print("값은 11부터 20 사이");
default:
print("1부터 20 사이의 값이 없다.");
}
switch (j) {
case 1...10 where j%2 == 0:
print("값은 1부터 10 사이의 짝수");
case 11...20 where j%2 == 0:
print("값은 11부터 20 사이의 짝수");
default:
print("1부터 20 사이의 값이 없다.");
}
switch (j) {
case 1...10 where j%2 == 0:
print("값은 1부터 10 사이의 짝수")
fallthrough
case 11...20 where j%2 == 0:
print("값은 11부터 20 사이의 짝수")
fallthrough
default:
break
}
let somePoint = (1, 1)
switch somePoint {
case (0, 0):
print("(0, 0) is at the origin")
case (_, 0):
print("(\(somePoint.0), 0) is on the x-axis")
case (0, _):
print("(0, \(somePoint.1)) is on the y-axis")
case (-2...2, -2...2):
print("(\(somePoint.0), \(somePoint.1)) is inside the box")
default:
print("(\(somePoint.0), \(somePoint.1)) is outside of the box")
}
이렇게 임시 변수에 데이터를 바인딩하여 처리할 수도 있다.
let anotherPoint = (2, 0)
switch anotherPoint {
case (let x, 0):
print("on the x-axis with an x value of \(x)")
case (0, let y):
print("on the y-axis with a y value of \(y)")
case let (x, y):
print("somewhere else at (\(x), \(y))")
}
// prints "on the x-axis with an x value of 2"
그냥 입력하다보니 세미콜론을 찍었다가 안찍었다가 했네...그런데, 에러 메시지가 없이 실행된다.
넣어도 되고 않넣어도 되나보다.