Swift๋ ๋ค์ํ ์ ์ด ํ๋ฆ๋ฌธ์ ์ ๊ณตํ๊ณ ์๋ค. ๊ทธ ์ข ๋ฅ๋ก๋ while, if, guard, switch ๊ตฌ๋ฌธ๊ณผ ๋ค๋ฅธ ์ฝ๋์ ์คํ์ผ๋ก ๋์ด๊ฐ๊ฒ ํด์ฃผ๋ break์ continue๋ฌธ๋ ์กด์ฌํ๋ค.
Swift๋ ๋ํ ๋ฐฐ์ด, ๋์ ๋๋ฆฌ, ๋ฒ์, ๋ฌธ์์ด, ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ฐ์์ ์ธ ๊ฒ์ ๋ํ ๋ฐ๋ณต์ ์ฝ๊ฒ ๋ง๋ค์ด ์ฃผ๋ for-in ๋ฃจํ๋ฅผ ์ ๊ณตํ๋ค.
For-In ๋ฃจํ(For-IN Loops)
๋ฐฐ์ด์ ์์, ํน์ ๋ฒ์์ ์ซ์, ๋ฌธ์์ด ๊ฐ์ ์ฐ์์ ์ธ ๊ฒ๋ค์ for-in ๋ฃจํ๋ฅผ ์ด์ฉํ์ฌ ๋ฐ๋ณต ์ํฌ ์ ์๋ค.
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
print("Hello, \(name)!")
}
// Hello, Anna!
// Hello, Alex!
// Hello, Brian!
// Hello, Jack!
๋์ ๋๋ฆฌ์ ํค ๋ฐ ๋ฐ์ดํฐ ๊ฐ์ ์ ๊ทผํ๊ธฐ ์ํด ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ๋์ ๋๋ฆฌ์ ๊ฐ ์์๋ค์ ๋ฐ๋ณต๋ฌธ์ ๊ฑฐ์ณ ํํ๋ก ๋ฐํ๋ ์ ์๋ค.
let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
print("\(animalName)s have \(legCount) legs")
}
// cats have 4 legs
// ants have 6 legs
// spiders have 8 legs
์ซ์ ๋ฒ์์ ๋ํ ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ๋ ๊ฐ๋ฅํ๋ค.
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
๋ฒ์๋ฅผ ๊ฑด๋ ๋ฐ๋ stride ๋ฐ๋ณต๋ฌธ๋ ์กด์ฌ ํ๋ค.
let minuteInterval = 5
for tickMark in stride(from: 0, to: minutes, by: minuteInterval) {
// render the tick mark every 5 minutes (0, 5, 10, 15 ... 45, 50, 55)
}
let hours = 12
let hourInterval = 3
for tickMark in stride(from: 3, through: hours, by: hourInterval) {
// render the tick mark every 3 hours (3, 6, 9, 12)
}
While ๋ฃจํ (While Loops)
while ๋ฃจํ๋ ์ด๋ ํ ์กฐ๊ฑด์ด false๊ฐ ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ ๋ฌธ์ฅ์ด๋ค. ๋ํ 2๊ฐ์ง while ๋ฃจํ๊ฐ ์กด์ฌ ํ๋ค.
- while ์ ๋ฃจํ๊ฐ ์์ํ ๋๋ง๋ค ์กฐ๊ฑด์ ๋น๊ตํ๋ค.
- repeat-while ์ ๋ฃจํ๊ฐ ๋๋ ๋ ๋ง๋ค ์กฐ๊ฑด์ ๋น๊ตํ๋ค.
while
while ๋ฃจํ๋ ๋จ์ผ ์กฐ๊ฑด์ ํ๊ฐํจ์ผ๋ก ์์ํ๋ค. ์กฐ๊ฑด์ด false ๊ฐ ๋ ๋๊น์ง ์ค๊ดํธ ์์ ๊ตฌ๋ฌธ์ ๋ฐ๋ณต ๋๋ค.
Repeat-while
๋ฃจํ์ ์กฐ๊ฑด์ ํ๋จํ๊ธฐ ์ ์ ๋ฃจํ ๋ธ๋ญ์ ์ฒ์์ ํ๋ฒ ๋จผ์ ํต๊ณผํ ํ ์กฐ๊ฑด์ ํ๋จํ๋ repeat-while ๋ฃจํ๊ฐ ์๋ค. ์กฐ๊ฑด์ด false ๊ฐ ๋ ๋๊น์ง ๋ฃจํ๋ฅผ ๋ฐ๋ณตํ๋ค.
์กฐ๊ฑด ๊ตฌ๋ฌธ (Conditional Statements)
Swift๋ ์ฝ๋์ ์กฐ๊ฑด์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ if ๊ตฌ๋ฌธ๊ณผ switch ๊ตฌ๋ฌธ์ด ์๋ค. ์ผ๋ฐ์ ์ผ๋ก if ๊ตฌ๋ฌธ์ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๊ฐ ์ ์ ๊ฐ๋จํ ์กฐ๊ฑด์ ์ ํฉํ๋ค. switch ๊ตฌ๋ฌธ์ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌ๊ฐ์ด๋ฉฐ ๋ ๋ณต์กํ ์กฐ๊ฑด์ ์ ํฉํ๊ณ ์คํํด์ผ ํ ์ ์ ํ ์ฝ๋ ๋ถ๊ธฐํด์ผ ํ๋ ํจํด ๋งค์นญ ์ํ์ ์ ์ฉํ๋ค.
If
๊ฐ์ฅ ๊ฐ๋จํ ํ์์ผ๋ก if ๊ตฌ๋ฌธ์ ๋จ์ผ ์กฐ๊ฑด์ ๊ฐ๋๋ค. ์กฐ๊ฑด์ด true ์ผ ๊ฒฝ์ฐ์๋ง ๊ตฌ๋ฌธ์ ์คํํ๋ค.
temperatureInFahrenheit = 40
if temperatureInFahrenheit <= 32 {
print("It's very cold. Consider wearing a scarf.")
} else {
print("It's not that cold. Wear a t-shirt.")
}
// Prints "It's not that cold. Wear a t-shirt."
2๊ฐ์ ์ค๊ดํธ ์ค ํ๋๋ ํญ์ ์คํ๋๋ค. ๊ธฐ์จ์ด ์ฆ๊ฐํ์ฌ ํ์จ 40๋๊ฐ ๋๋ฉด ์ค์นดํ๋ฅผ ํด์ผ ํ๋ค๊ณ ๋งํ์ง ์์ผ๋ฉฐ, else ๊ตฌ๋ฌธ์ด ์คํ ๋ฉ๋๋ค.
Switch
switch ๊ตฌ๋ฌธ์ ์ฌ๋ฌ ๊ฐ๋ฅํ ์ํ์ ์๋ตํ๊ธฐ ์ํด if ๊ตฌ๋ฌธ์ ๋์ฒด ๊ตฌ๋ฌธ์ผ๋ก ์ ๊ณต๋๋ค.
switch๋ ๋ชจ๋ ์ผ์ด์ค๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ฉฐ, ๋ํ ๊ธฐ๋ณธ ์ผ์ด์ค๋ default ํค์๋๋ก ๋ํ๋ด๊ณ ํญ์ ๋ง์ง๋ง์ ์์นํด์ผ ํ๋ค.
์ ์ด ์ ์ก๋ฌธ(Control Transfer Statements)
Continue
๋ฐ๋ณต๋ฌธ์์ ๋ค์ ์ฃผ๊ธฐ๋ก ๋์ด๊ฐ์ ๊ณ์ํจ(continue)์ ์๋ฏธ
continue๋ฅผ ๋ง๋๋ฉด ๋ค์ ๋ฌธ์ฅ๋ค์ ๋ฌด์ํ๊ณ ์ธ์ดํด๋ก ๋์ด๊ฐ
let puzzleInput = "great minds think alike"
var puzzleOutput = ""
let charactersToRemove: [Character] = ["a", "e", "i", "o", "u", " "]
for character in puzzleInput {
if charactersToRemove.contains(character) {
continue
}
puzzleOutput.append(character)
}
print(puzzleOutput)
// Prints "grtmndsthnklk"
Break
๋ฐ๋ณต๋ฌธ์ ์์ ์ค์ง
breake๋ฅผ ๋ง๋๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ธ์ดํด์ ์ค์งํ๊ณ ๋ฐ๋ณต๋ฌธ์ ๋ฒ์ด๋ ๋ค์ ๋ฌธ์ฅ์ผ๋ก ๋์ด๊ฐ
Fallthrough
๋งค์นญ๋ ๊ฐ์ ๋ํ ๊ณ ๋ ค์์ด, ๋ฌด์กฐ๊ฑด ๋ค์๋ฌธ์ฅ๋ ์คํํ๊ณ ์ถ์ ๋, fallthrough ํค์๋ ์ฌ์ฉํ๋ค.
let integerToDescribe = 5
var description = "The number \(integerToDescribe) is"
switch integerToDescribe {
case 2, 3, 5, 7, 11, 13, 17, 19:
description += " a prime number, and also"
fallthrough
default:
description += " an integer."
}
print(description)
// Prints "The number 5 is a prime number, and also an integer."
๋ผ๋ฒจ์ด ์๋ ๊ตฌ๋ฌธ (Labeled Statements)
Swift์์ ๋ณต์กํ ์ ์ดํ๋ฆ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ฃจํ์ ์กฐ๊ฑด ๊ตฌ๋ฌธ๋ด์ ๋ค๋ฅธ ๋ฃจํ์ ์กฐ๊ฑด ๊ตฌ๋ฌธ์ ์ค์ฒฉํ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ ์ด๊ตฌ๋ฌธ์ด ์๋์น ์๊ฒ ๋ค๋ฅธ ๊ตฌ๋ฌธ์ ์ํฅ์ ์ค ์ ์๊ธฐ ๋๋ฌธ์ break ๊ตฌ๋ฌธ์ผ๋ก ์ข ๋ฃ๋ ๋ฃจํ๋ ์กฐ๊ฑด ๊ตฌ๋ฌธ์ ๋ผ๋ฒจ์ ๋ถ์ด๋ ๊ฒ์ด ์ ์ฉํ ๋๊ฐ ์๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๋ฌ๊ฐ์ ์ค์ฒฉ๋ ๋ฃจํ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด continue ๊ตฌ๋ฌธ์ ์ํฅ์ ๋ฐ๋ ๋ฃจํ์ ๋ผ๋ฒจ์ ๋ถ์ด๋ ๊ฒ์ด ์ ์ฉํ ์ ์๋ค.
gameLoop: while square != finalSquare {
diceRoll += 1
if diceRoll == 7 { diceRoll = 1 }
switch square + diceRoll {
case finalSquare:
// diceRoll will move us to the final square, so the game is over
break gameLoop
case let newSquare where newSquare > finalSquare:
// diceRoll will move us beyond the final square, so roll again
continue gameLoop
default:
// this is a valid move, so find out its effect
square += diceRoll
square += board[square]
}
}
print("Game over!")
'๐ฆ Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Closures (0) | 2022.06.15 |
---|---|
Functions (0) | 2022.06.01 |
Collection Types (0) | 2022.05.22 |
Strings and Characters (0) | 2022.05.22 |
Basicย Operators (0) | 2022.05.15 |