본문 바로가기

학습 노트/Swift (2021)

037 ~ 038. Loop Statements (반복문)

For-In Loops

Syntax

for loopConstant in Range {
    statements
}

for loopConstant in Collection {
    statements
}

loopConstant는 바꿀 수 없다.
Range만큼 Statements를 반복한다.

for index in 1 ... 3 {
    print("hello")
}

 

결과

hello
hello
hello

index는 선언이후 사용하지 않았기 때문에 warning이 표시된다.
이런 경우 index를 '_'로 대체하여 사용할 수 있는데 이를 wildcard pattern이라고 한다.

변형

for _ in 1 ... 3 {
    print("hello")
}

wildcard pattern은 위와 같이 변형해서 사용할 수 있다

let count = 10
var result = 1

for _ in 1 ... count {
    result *= 2
}

result

 

결과

1024

wildcard pattern을 사용하면 코드의 가독성이 좋아지고, 내부적으로도 효율적으로 실행된다.

Swift에서 짝수나 홀수의 반복 구현하기

C 계열의 언어와 다르게 단순 범위만 제공하기에 아래와 같은 방식으로 코드를 작성할 수 없음

void main() {
    for(i=1;i<=10;i+=2) {
        printf("%d\n", i)
    }
}

 

결과

2
4
6
8
10

따라서 stride 함수를 통해 다음과 같이 구현해야 한다.

//stride thrrough
for num in stride(from: 0, through: 10, bt: 2) { //num을 0에서 10까지 2씩 건너 뛰며 반복
    print(num)
}
결과

0
2
4
6
8
//stride to
for num in stride(from: 0, to: 10, bt: 2) { //num을 0에서 9까지 2씩 건너 뛰며 반복
    print(num)
}

 

결과

0
2
4
6
8

결과에서 보다싶이 stride의 to는 through와 다르게 upperbund에 포함되지 않음에 유의해야 한다.

list = [1, 2, 3]

for contents in list {
    print(contents)
}

 

결과

1
2
3

Collection을 range 대신에 넣게 되면 collection을 순환하게 된다.


While Loops

Syntax
while condition {
    statements
}

if와 다르게 condition에 따라 반복 횟수가 변하기 때문에 예측하기 어렵다.
따라서 무한 loop에 빠지지 않도록 조심해야 한다.

var num = 1
var sum = 0

while num <= 100 {
    sum += num
}
sum

 

결과

//무한 loop

num은 반복 횟수에 상관 없이 항상 1 이므로 항상 true를 반환하며, 따라서 무한히 반복한다.
주의하도록 하자.

var num = 1
var sum = 0

while num <= 100 {
    sum += num
    num += 1
}
sum

 

결과

5050

repeat-while

Syntax

repeat {
    statements
} while condition
var num = 100
while num < 100 {
    num += 1
}
print(num)

num = 100
repeat {
    num += 1
} while num < 100
print(num)

 

결과

100
101

statements를 실행 하고 이후에 condition을 체크하기 때문에,
condition을 먼저 체크하고 statements를 실행하는 while문과는 결과가 달라질 수 있다.


Log

2021.08.06.
블로그 이전으로 인한 글 옮김 및 수정