ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [레인스톤 iOS] 스위프트 easy하게 배워볼까? - 제어문(1)
    Swift 기초문법 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가 된 후 반복문이 종료됩니다.

     

    끗!

    오늘은 여기까지 ~

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

    안녕:)

    반응형

    댓글

Designed by Tistory.