[레인스톤 iOS] 스위프트 easy하게 배워볼까? - 제어문(1)
안녕하세요!
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가 된 후 반복문이 종료됩니다.
끗!
오늘은 여기까지 ~
다음 시간에는 조건 구문으로 돌아오겠습니다!
안녕:)