Swift 기초문법

[레인스톤 iOS] 스위프트 easy하게 배워볼까? - 제어문(1)

레인스톤 2022. 2. 18. 20:16
반응형

안녕하세요!

iOS개발자로 일하고있는 레인스톤입니다:)

 

오늘은 제어문 1편!

반복문에 대해서 학습해보겠습니다.

 

For-In 문 (For-In Loops)

For-In 문은 콜렉션 타입, 숫자, 문자열 등을 순서대로 순회할 때 사용합니다.

역시 코드를 보는게 이해가 빠르기 때문에 바로 예시를 살펴보겠습니다:)

 

var starbucks = ["아메리카노", "카페라테", "카모마일티", "핫초코"]

for menu in starbucks {
    print(menu)
}
/*
 아메리카노
 카페라테
 카모마일티
 핫초코
 */

 

콜렉션 타입 중 배열을 순회해봤습니다.

그럼 key-value값을 가지고 있는 사전을 순회할 때는 어떻게 해야될까요?

 

var starbucks = ["아메리카노": 4600, "카페라테": 5100, "카모마일티": 4600, "핫초코": 5700]

for (menu, price) in starbucks {
    print("\(menu): \(price)원")
}
/*
 핫초코: 5700원
 아메리카노: 4600원
 카페라테: 5100원
 카모마일티: 4600원
 */

 

이렇게 튜플 안에 (key, value) 형식으로 순회를 하면 되겠죠?

잠깐!? 튜플이 뭔가요...? 는 2편에서 나옵니다.

잠시만 기다려주세용!

 

아니 근데 For-In문은 순서대로 순회한다고 했는데...

왜 아메리카노부터 출력되지 않았을까요!?

콜렉션 타입에서 설명드린 것처럼 사전은 순서를 보장하지 않습니다!

For-In문의 문제가 아니라 사전때문이라는 점! 잊지 말아주세요:)

 

for status in "졸림 배고픔" {
    print(status)
}

/*
 졸
 림
  
 배
 고
 픔
 */

for number in 1...5 {
    print(number)
}

/*
 1
 2
 3
 4
 5
 */

 

콜렉션 타입이 아닌 문자열과 숫자(+범위연산자)도 순회할 수 있습니다.

"졸"과 "림"이 따로 출력된 점을 주의깊게 봐주세요.

문자열의 띄어쓰기 단위가 아니라 문자(Character) 단위로 순회하여 출력되고 있습니다.

 

var fiveTimes = 5
var answer = 0

for _ in 0..<fiveTimes {
    answer += 1
}
print(answer) // 5

 

이렇게 범위 연산자와 함께 사용할 수도 있고,

변수를 사용할 필요 없으면 _ 키워드로 생략할 수도 있습니다.

 

음... 근데 1씩이 아닌 2, 3, 4씩 늘려가며 순회를 하고 싶을땐 어떻게 해야할까요?

아니면 1부터 5아닌 5부터 1로 순회하고 싶을 때라면요!?

 

for number in stride(from: 2, to: 10, by: 2) {
    print(number)
}

/*
 2
 4
 6
 8
 */

for number in stride(from: 5, through: 1, by: -1) {
    print(number)
}

/*
 5
 4
 3
 2
 1
 */

 

쨔쟌 ~ stride를 활용해서 가능합니다.

혹시 두 For-In문의 차이점을 발견하셨나요!?

위는 stride(from: to: by:) 아래는 stride(from: through: by:)로 to와 through가 다르네요.

to는 ..<의 역할을 하기때문에 (to: 10)은 10까지가 아니라 9까지 순회합니다.

through는 ...의 역할을 하기 때문에 (through: 10)은 9가아니라 10까지 순회합니다.

헷갈리지마세용 ㅎㅎ

 

While문(While Loops)

For-Loop 말고 While을 통해서도 반복&순회를 할 수 있습니다.

스위프트에서는 while과 repeat-while을 사용할 수 있죵!

while + condition을 활용하여 condition이 false가 될 때 까지 반복할 수 있습니다.

역시 코드를 살펴보며 이해해볼까요!?

 

var number = 0

while number < 5 {
    number+=1
    print(number)
}

/*
 1
 2
 3
 4
 5
 */

 

while 옆에 condition자리에 number < 5 에 집중하시면 됩니다.

number가 5보다 작을 때만 while문이 반복됩니다.

즉 number가 5가되는 순간 while문 반복이 중단됩니다.

 

repeat-while은 다른 언어의 do-while과 비슷하다고 생각하시면 됩니다.

while 구문을 최소 한 번 이상 실행하고 조건을 판단합니다.

말이 어렵죠? 역시 코드로 이해해보겠습니다.

 

var number = 5

repeat {
    number+=1
    print(number) // 6
} while number < 5

 

while문의 조건은 5보다 작을 때이지만, repeat이 붙었기 때문에 최소 1번은 실행됩니다.

따라서 number에 1이 더해져서 6이되고 condition과 비교하여 false가 된 후 반복문이 종료됩니다.

 

끗!

오늘은 여기까지 ~

다음 시간에는 조건 구문으로 돌아오겠습니다!

안녕:)

반응형