๐ง๐ป์ด๋ฒ Swift ์๊ฐ์ ๋ฐฐ์๋ณผ ๊ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ๐จ๐ป๐ป
๋ฐ๋ณต๋ฌธ
- for
- while
- break์ continue
1. for
์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ๋ฐ๋ณต ์์ ์ ๋ ธ์ถ๋๋ ์๊ฐ๋ค์ด ๋ง๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ธ์ด๋ฅผ ํ ๋ฒ์ด๋ผ๋ ํ์ตํด๋ณธ ์ ์ด ์๋ค๋ฉด ์ด๋ฒ ์๊ฐ์ ๋ฐฐ์ธ ๋ฐ๋ณต๋ฌธ์ด ๋์ฑ ์ฌ์ธ ๊ฒ์ด๋ค.
๊ทธ๋ผ ๋ฐ๋ก ์์๋ฅผ ํตํด ์ด๋ฒ ํ์ต ์์ ํด๋ณด์!
let platforms = ["iOS", "macOS", "tvOS", "watchOS"]
for os in platforms {
print("Swift works great on \(os).")
}
platforms์ ๋ฐฐ์ด ๊ฐ์ ์ ์ธํ์ฌ ๋ฐ๋ณต๋ฌธ์ ํตํ์ฌ platforms์ ์ํด ์๋ ๋ฐฐ์ด ์์ ๊ฐ๋ค์ ํ๋์ฉ ์ถ๋ ฅํด๋ณด์๋ค.
๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
Swift works great on ~~~ ์ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐฐ์ด์ ์์ ๊ฐ์ ๋ง๊ฒ 4๋ฒ ๋ฐ๋ณตํ์ฌ ์ถ๋ ฅํ๋ฉฐ (os) ๊ฐ์๋ ๋ฐฐ์ด์ ๋ค์ด์๋ ์์๋ค์ ์์๋๋ก ์ถ๋ ฅํ๋ค.
์ฌ๊ธฐ์ os๋ ๋ฃจํ ๋ณ์๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด os๊ฐ์ ๋ฐ๋ณต๋ฌธ ๋ด๋ถ์์๋ง ์กด์ฌํ๋ฉฐ ๋ค์ ๋ฃจํ๋ก ๋ฐ๋ณตํ ๊ฒฝ์ฐ ์ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋์ด ์ถ๋ ฅ๋๋ค. ๊ทธ๋ผ os๋ง ์ธ ์ ์๋๋? ๊ทธ๊ฑด ์๋๋ค. ์ฌ์ฉ์๊ฐ ์ํ๋ ์ด๋ฆ์ ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
for name in platforms {
print("Swift works great on \(name).")
}
์ด๋ฐ ์์ผ๋ก ๋ง์ด๋ค.
๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด์ ๋ณดํต ๋ญ ์ ์ผ ๋ง์ด ์ฐ์ตํด๋ณผ๊น? ๋์ ๊ฒฝ์ฐ ๊ตฌ๊ตฌ๋จ์ด๋ค. ํ๋ฒ ํ ์คํธ๋ฅผ ํด๋ณด์๋ฉด
for i in 1...10 {
print("\(i)๋จ :")
for j in 1...10 {
print(" \(i) x \(j) = \(j * i)")
}
print()
}
์ ์ ๋ณด๋ฉด for๋ฌธ ์์ ๋ for๋ฌธ์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ฒซ ๋ฒ์งธ for๋ฌธ์ ๋ง ๊ทธ๋๋ก 1๋ถํฐ 10๊น์ง์ ๋จ์ ๊ทธ๋ฅ ํํํ๋ ๊ฒ์ด๋ค. ์ค๋ช ์ด ์ข ์ ๋งคํ๋๊น ์์๋ก ๋ณด์๋ฉด 1๋จ, 2๋จ, 3๋จ ~~ ์ด๋ฐ ์์ผ๋ก!
๊ทธ๋ผ ์์ ํ๋ฒ ๋ ์๋ ๋ฃจํ ๋ณ์ j์ ๋ํ ๋ฐ๋ณต์ ๋ญ ํํํ๋ ๊ฑธ๊น?๐ค
์ด๊ฑด ๊ตฌ๊ตฌ๋จ์์ ์ค์ง์ ์ผ๋ก ๊ณ์ฐ์ด ์ผ์ด๋๋ ๋ฐ๋ณต๋ฌธ์ด๋ค.
์ ๋ณด๋ฉด i์ ๊ฐ๊ณผ j์ ๊ฐ์ ๋ฐ์์์ ๊ณฑ์ ์ ํ ๊ฒฐ๊ณผ๋ฅผ ํํํ๋ ๊ฒ์ธ๋ฐ ์ฌ๊ธฐ์ ๋ฐ๋ณต๋ฌธ ์์ ๋ฐ๋ณต๋ฌธ์ ๋ฃ์ ์ด์ ๊ฐ ์ค๋ช ๋๋ค.
์ด๊ฑธ ์ด์ ์คํํด๋ณด๋ฉด ์๋ 10๋จ๊น์ง ๊ฐ์ผ ํ๋๋ฐ ๊ทธ๋ผ ์ฌ์ด์ฆ๊ฐ ๋๋ฌด ์ปค์ ธ๋ฒ๋ฆฌ๋ 1๋จ์์ 3๋จ๊น์ง๋ง ์๋๋ค.
์ด๊ฒ ๋ง๊ณ ๋ ๋ค์ํ ์์ ๊ฐ ๋ง์๋ฐ ๊ทธ๊ฑด ๋ฐ๋ณต๋ฌธ ์์ ๋ง ๊ฒ์ํด๋ด๋ ๋ค์ํ๊ฒ ๋ง์ด ๋์จ๋ค.
2. while
๋ ๋ฒ์งธ ๋ฐ๋ณต์ผ๋ก๋ while์ด ์๋ค. while์ for๋ฌธ๊ณผ๋ ๋ค๋ฅด๊ฒ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด ๋ ๋๊น์ง ๊ณ์ํด์ ์คํํ๋ ๊ฒ์ด๋ค.
๊ธฐ๋ณธ์ ์ธ ์์ ๋ก while์ ๋ํด ๋จผ์ ์์๋ณด์!
var countdown = 10
while countdown > 0 {
print("\(countdown)")
countdown -= 1
}
print("๋นต!")
countdown์ด 10์ด๋ค. ๊ทธ๋ฆฌ๊ณ while๋ฌธ์์ countdown์ด 0๋ณด๋ค ํด ๋๊น์ง ๊ณ์ํด์ ํด๋น ๋ฌธ์ฅ์ ์ถ๋ ฅํ๊ณ , countdown์ ํ๋์ฉ ๊ฐ์์ํค๋ ๊ฒ์ด๋ค. ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ๋ ์ดํดํ๊ธฐ ์ฝ๋ค.
countdown ๊ฐ์ด ์์ ๋งํ๋ฏ ๊ฐ์ํ๋ฉฐ ํ๋์ฉ ์ถ๋ ฅํ๋ค๊ฐ 0์ด ๋ ๋ loop๋ฅผ ๋ฒ์ด๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
3. break์ continue
Swift์์๋ loop์์ ํ ๊ฐ ์ด์์ ํญ๋ชฉ์ ๊ฑด๋๋ธ ์ ์๋ ๋ฐฉ๋ฒ 2๊ฐ์ง๋ฅผ ์ ๊ณตํ๋๋ฐ, ์ด๊ฒ์ด break์ continue์ด๋ค.
๊ฑด๋๋ด๋ค๋ ๊ฒ ๋ญ๊น? ์ด๊ฑด ์ดํ ์์๋ฅผ ํตํด ํ๋ฒ ์์๋ณด์.
(1) break
let number1 = 4
let number2 = 14
var multiples = [Int]()
for i in 1...100_000 {
if i.isMultiple(of: number1) && i.isMultiple(of: number2) {
multiples.append(i)
if multiples.count == 10 {
break
}
}
}
print(multiples)
์ง๊ธ๊น์ง ๋ฐฐ์ ๋ ๊ฒ์ ๋ง์ด ์์ฉํ๋ค ๋ณด๋ ์กฐ๊ธ์ ์ดํดํ๊ธฐ ํ๋ค ์ ์๋ค. ํ์ง๋ง ํ ์ค์ฉ ์ฐฌ์ฐฌํ ๋ณด์!
- ๋ ๊ฐ์ ์ ์๋ฅผ ์ ์ฅํ ์์๋ฅผ number 1, number 2๋ก ์ง์ ํ์๋ค.
- ๋ ์ซ์์ ๊ณตํต ๋ฐฐ์๋ฅผ ์ ์ฅํ ์ ์ ๋ฐฐ์ด ๋ณ์๋ฅผ ์์ฑํ์๋ค.
- ๋ฃจํ ๋ณ์๋ฅผ i๋ก ํ ๋นํด์ 1๋ถํฐ 100.000๊น์ง ๋ฐ๋ณตํ๋ค.
- i๊ฐ ์ ์ผ ์ฒ์ ์์์ ์ ์ฅํ ์ซ์์ธ ๊ฒฝ์ฐ 2๋ฒ์งธ ๊ณผ์ ์์ ์์ฑํ ์ ์ ๋ฐฐ์ด์ ์ถ๊ฐํ๋ค.
- 10 ๋ฐฐ์๊ฐ ๋์ผ๋ฉด ์ฌ๊ธฐ์ break๋ฅผ ๊ฑธ์ด ๋ฃจํ๋ฅผ ๋น ์ ธ๋์จ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
(2) continue
let filenames = ["me.jpg", "work.txt", "sophie.jpg", "logo.psd"]
for filename in filenames {
if filename.hasSuffix(".jpg") == false {
continue
}
print("Found picture: \(filename)")
}
๋ฐฐ์ด ๋ด๋ถ์ ํ์ผ๋ช ๊ณผ ํ์ผ ํ์ฅ์ ๋ช ์ด ๋ค๋ฅธ ํ์ผ๋ค์ด ํ ๋น๋์ด์๋ค. ์ด์ ๊ฒฝ์ฐ for๋ฌธ์ ํตํด ํ์ผ ์ด๋ฆ์ ์ถ๋ ฅํ๊ฒ๋ ํ์๋ค. ์ฌ๊ธฐ๊น์ง๋ ์ดํดํ๊ธฐ ์ฝ๋ค. ๊ทธ๋ฐ๋ฐ jpg๊ฐ ์๋์ง ์๋์ง ํ์ธ์ ํ๊ณ continue๋ ์ด ํ ์คํธ์์ ์คํจํ ๋ชจ๋ ํ์ผ ์ด๋ฆ์ ๊ฑด๋๋ฐ๊ณ ํ ์คํธ์ ํต๊ณผํ ํ์ผ๋ค๋ง ๋ง์ง๋ง์ ์ถ๋ ฅํด์ค๋ค. ํ๋ง๋๋ก ์ฌ๊ณผ๊ธฐ ๊ฐ์ ์ญํ ์ ํ๋ฒ ํด์ค ์ ์ด๋ค.
๋ ๊ฐ์ง ๋ชจ๋ ๋ฃจํ์ ๋ฐ๋ณต์ ๊ฑด๋๋ฐ๋ ๊ฒ์ ๊ฐ์ง๋ง ์ธ๋ถ์ ์ธ ๋ถ๋ถ์ ๋ฐ์ ธ๋ณด๋ฉด ์กฐ๊ธ์ ๋ค๋ฅด๋ค. ์์๋ฅผ ๋ณธ ๊ฒ์ฒ๋ผ ๋ฃจํ ๋ฐ๋ณต์ ๋๋จธ์ง ๋ฃจํ ๋ฐ๋ณต์ ๋ชจ๋ ๊ฑด๋๋ฐ๊ณ ์ถ๋ค๋ฉด break, ๋ฃจํ ๋ฐ๋ณต์ ๋๋จธ์ง ๋ถ๋ถ์ ๊ฑด๋๋ฐ๋ ค๋ฉด continue๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
learning by repetition
https://www.hackingwithswift.com/100/swiftui/6
Day 6 – 100 Days of SwiftUI
Follow the 100 Days of SwiftUI and learn to build apps for free.
www.hackingwithswift.com
'iOS > Swift ๋ฌธ๋ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋งค๊ฐ๋ณ์ (0) | 2022.07.24 |
---|---|
ํจ์ (0) | 2022.07.23 |
์กฐ๊ฑด๋ฌธ & ์ผํญ ์ฐ์ฐ์ (0) | 2022.07.14 |
Type annotations(ํ์ ์ถ๋ก ) (0) | 2022.07.12 |
๋ฐฐ์ด(2) (0) | 2022.07.11 |