๐ง๐ป์ด๋ฒ Swift ์๊ฐ์ ๋ฐฐ์๋ณผ ๊ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ๐จ๐ป๐ป
- if ๋ฌธ
- else, else if๋ฌธ
- &&, ||
- switch ๋ฌธ
- ์ผํญ ์กฐ๊ฑด๋ถ ์ฐ์ฐ์
1. if ๋ฌธ
์กฐ๊ฑด๋ฌธ์์ ๋จ๊ณจ๋ก ์์ฃผ ๋์ค๋ ์น๊ตฌ๋ค. ์ต์ํ ์ฌ๋์ ์๋ง ๋์ฑ ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์์ ๊ฑฐ๋ผ ์์์ด ๋๋๋ฐ, ๋ค๋ฅธ ์ธ์ด๋ค๊ณผ ํฌ๊ฒ ๋ค๋ฅธ ๊ฒ์ด ์์ผ๋ฏ๋ก ๊ฐ๋ณ๊ฒ ๋ณด์!
let score = 85
if score > 80 {
print("์ฐธ ์ํ์ด์!")
}
์ฌ์ด ์์ ๋ก ์์ ํด๋ณด์. score์๋ 85๋ผ๋ ๊ฐ์ด ํ ๋น๋์ด์๊ณ , ์ดํ if ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ง์ฝ score๊ฐ 80์ ์ด ๋์ผ๋ฉด "์ฐธ ์ํ์ด์!"๋ผ๋ ๊ฒ์ ์ถ๋ ฅํ๋ ๋ฐฉ์์ด๋ค. ์ฝ๋ค! ๊ทธ๋ผ 80๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด์ ์ถ๋ ฅํ๋ ค๋ฉด? >= ์ ์ฌ์ฉํ๋ฉด ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
์ด๋ฒ์๋ ์ง๊ธ๊น์ง ๋ฐฐ์ด๊ฒ์ ์ด์ฉํ์ฌ ์์ฉํด๋ณด์!
//3๊ฐ์ ์ ์๋ฅผ ๊ฐ์ง ๋ฐฐ์ด์ ๋ง๋ ๋ค.
var numbers = [1, 2, 3]
//๋ฐฐ์ด์ 4๋ฅผ ์ถ๊ฐํ๋ค.
numbers.append(4)
//๋ฐฐ์ด ์์๊ฐ 3๊ฐ๊ฐ ๋์ผ๋ฉด
if numbers.count > 3 {
//0 ๋ฒ์งธ ์์๋ฅผ ์ญ์ ํ๋ค.
numbers.remove(at: 0)
}
//๊ฒฐ๊ณผ
print(numbers)
์ฒ์์ ์์ฑํ ๋ฐฐ์ด์๋ 1, 2, 3์ผ๋ก ์ดํ ๋ฐฐ์ด์ 4๋ฅผ ์ถ๊ฐํด์ฃผ๊ณ if๋ฌธ์ผ๋ก ๋ฐฐ์ด์ ๊ฐ์๊ฐ 3๊ฐ๊ฐ ๋์ผ๋ฉด 0๋ฒ์งธ ์์์ธ 1์ ์ญ์ ํ๋๋ก ํ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ณผ๋?? 2, 3, 4 ๊ฐ ์ถ๋ ฅ๋ ๊ฒ์ด๋ค!
2. else, else if
์ด๋ฒ์๋ ์ฌ์ฉ์๊ฐ ์กฐ๊ฑด์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ค์ ํ๊ณ ์ถ์ ๋๋ ์ด๋ป๊ฒ ํ๋์ง ์์๋ณด์!
let age = 16
if age >= 18 {
print("You can vote in the next election.")
}
if age < 18 {
print("Sorry, you're too young to vote.")
}
์ด๋ ๊ฒ ํด๋ ๋๊ธด ํ๋ค. ํ์ง๋ง ๋ฑ ๋ด๋ ํจ์จ์ ์ด์ง๋ ์์ ๋ณด์ธ๋ค. ์ด๋ ํ์ํ ๊ฒ์ด ๋ฐ๋ก else์ด๋ค.
else if๋ฅผ ์์ ์์์ ์ ์ฉํด๋ณด์.
let age = 16
if age >= 18 {
print("You can vote in the next election.")
} else {
print("Sorry, you're too young to vote.")
}
์์ ๊ฒฝ์ฐ ์กฐ๊ฑด ๋ ๊ฐ๋ฅผ ๋ถ์ฌํ์ฌ์ age๋ฅผ ๋ ๋ฒ ์ฌ์ฉํ์์ง๋ง ์ด๋ฒ์๋ ํ ๋ฒ๋ง ์ด์ฉํ์ฌ 18์ด์ด๊ฑฐ๋ ํฐ ๊ฒ์ด ์๋๋ฉด ์๋์ผ๋ก
"Sorry, you're too young to vote."๋ฅผ ์ถ๋ ฅํ๊ฒ๋ ํ์๋ค. ํจ์ฌ ๊น๋ํ ๊ฒ์ ๋น๊ตํ ์ ์๋ค.
๊ทธ๋ผ ์ด๋ฒ์๋ ์กฐ๊ฑด์ด 2๊ฐ ์ด์์ผ ๋๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ์ด๋ ํ์ํ ๊ฒ์ else if์ด๋ค.
๋ฐ๋ก ์์๋ก ํ์ธํ์.
let a = false
let b = true
if a {
print("Code to run if a is true")
} else if b {
print("Code to run if a is false but b is true")
} else {
print("Code to run if both a and b are false")
}
else if๋ ์ฒซ ๋ฒ์งธ ์กฐ๊ฑด๋ฌธ if์ ์กฐ๊ฑด์ด ๋ง์กฑ๋์ง ์์ ๊ฒฝ์ฐ์ ์คํํ ์ ์๋ค. else if๋ ํ๋๊ฐ ์๋ ์ฌ๋ฌ ๊ฐ๊น์ง๋ ๊ฐ๋ฅํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ๋ค๋ฅธ ๊ฒ๋ค๊ณผ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ ์๋ ์๋ค.
๊ทธ๋ผ ์ฌ๊ธฐ์ ๋๋ ์๋ฌธ์ else๋ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ์๋? else๋ ์๋๋ค. ์ด์ ๋ ๊ทธ ์์ฒด๊ฐ "์์ ๋์จ ๋ชจ๋ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด์๋ค๋ฉด"์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ์์ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ else๋ ํ๋๋ง ์กด์ฌํ๋ค.
3. &&, ||
๋ง์ฝ ์จ๋๊ฐ 20๋ ์ด์์ด๊ณ 30๋ ๋ฏธ๋ง์ผ ๋ ์ํ๋ ๋ฌธ์ฅ์ ์ถ๋ ฅํ๊ณ ์ถ์ ๋๋ ์ด๋กํด์ผ ํ ๊น?
์์์ ๋ฐฐ์ด if ๋ฌธ์ ์ด์ฉํ๊ฒ ๋๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ ๊ฒ์ด๋ค.
let temp = 25
if temp > 20 {
if temp < 30 {
print("It's a nice day.")
}
}
์ด๋ ๊ฒ ํด๋ ์ ์์ ์ผ๋ก ์ถ๋ ฅ์ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋๋ฐ ๊ทธ๊ฒ์ด ๋ฐ๋ก "and"๋ผ๊ณ ๋ถ๋ฆฌ๋ &&์ด๋ค.
์ด๊ฒ์ ๋ ์กฐ๊ฑด์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉ๋๋ฉฐ, ์กฐ๊ฑด ์์ ๋ ๋ถ๋ถ ๋ชจ๋๊ฐ ์ฐธ์ผ ๋๋ง ์ ์ฒด ์กฐ๊ฑด์ด ์ฐธ์ด ๋๋ค. ๊ทธ๋ผ ์ด๋ฒ์๋ ์ด๋ฅผ ํตํด ์์ ์ฝ๋๋ฅผ ๋ฐ๊ฟ๋ณด์!
if temp > 20 && temp < 30 {
print("It's a nice day.")
}
์์ if ๋ถ๋ถ์ด ๋ ๋ฒ์ผ ๋ ์ด๋ฒ์๋ ํ ๋ฒ์ ๋ ์กฐ๊ฑด์ ์ฐ๊ฒฐํ์ฌ ์ฒ์ ์ํ๋ ์กฐ๊ฑด์ ๋์ผํ๊ฒ ํํํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด๋ฒ์๋ ๊ทธ๋ผ ๋น์ทํ๊ฒ || ์ด๋ค. ||๋ "or"๋ก ์ ์๋ฏธํ๋ฉฐ, &&๋ ๋ ์กฐ๊ฑด์ด ๋ชจ๋ ์ฐธ์ด์ด์ผ ์ ์ฒด ์กฐ๊ฑด์ด ์ฐธ์ด ๋๋ ๊ฒ์ด์์ง๋ง, ||์ ๊ฒฝ์ฐ ๋ ์ค ํ๋๋ง ์ฐธ ์ด์ด๋ ์ ์ฒด ์กฐ๊ฑด์ด ์ฐธ์ด ๋๋ค. ์ด๊ฒ ๋ํ ์์๋ก ๋ณด์ ๐ต๏ธโ๏ธ
let userAge = 14
let hasParentalConsent = true
if userAge >= 18 || hasParentalConsent == true {
print("You can buy the game")
}
๊ฒ์์ ๊ตฌ๋งคํ๋ ค๋ ์ฌ์ฉ์๋ 14์ธ์ด๋ฉฐ ๋ถ๋ชจ๋์ ํ๋ฝ์ ๋ฐ์ ์ํฉ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ฒ์์ 18์ธ ์ด์์ด๊ฑฐ๋ ๋ถ๋ชจ๋์ด ํ๋ฝ์ ํด์ค ๊ฒฝ์ฐ์๋ ๊ตฌ๋งค๊ฐ ๊ฐ๋ฅํ๋ค๊ณ ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค. ์์ &&์์๋ ์ด ๊ฒฝ์ฐ ๊ฒ์์ ๊ตฌ๋งคํ ์ ์๋ค. ์?? 18์ธ ์ด์ฉ๊ฐ ๊ฒ์์ ๋๊ฐ 14์ด์ง๋ฆฌ๊ฐ ํ๋ค๋ ๊ฑด๊ฐ?? ๋ถ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ ์ฐ๋ฆฌ๋ ||์ ์์ ์์ ์ฌ์ฉํ์๊ณ ์ด๋ 14 ์ธ์ง๋ง ๋ถ๋ชจ๋์ ํ๋ฝ์ ๋ฐ์๋ค๋ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ ์ 14์ธ ์์ด๋ ๊ฒ์์ ๊ตฌ๋งคํ ์ ์๊ฒ ๋๋ค. ์ด๋ฆด ๋ fps ๊ฒ์ ํ๋ ค๊ณ ๋ถ๋ชจ๋ ๋ฏผ์ฆ์ ๋ชฐ๋ ๋น๋ฆฐ ๊ธฐ์ต์ด ๋๊ฒ ํ๋ ์์ ๋ค.
4. Switch
์ ์ด์ switch์ ๋ํด์ ๋ฐฐ์๋ณด์ ์ค์์น๋ ์ฌ๋ฌ ์กฐ๊ฑด์ด ์์ ๋ ์ฌ์ฉํ๊ธฐ ํธํ๋ฐ ์๋ฅผ ๋ค๋ฉด ์์ if์ else if๋ฅผ ์ด์ฉํ์ฌ ๋ง์ด ํธํด์ก์ง๋ง ๋ง์ฝ ๋ค์๊ณผ ๊ฐ์ด ํจ์ฌ ๋ง์ ์กฐ๊ฑด์ด ๋ถ์ฌ๋๋ค๋ฉด ์ด๋จ๊น?
enum Weather {
case sun, rain, wind, snow, unknown
}
let forecast = Weather.sun
if forecast == .sun {
print("It should be a nice day.")
} else if forecast == .rain {
print("Pack an umbrella.")
} else if forecast == .wind {
print("Wear something warm")
} else if forecast == .rain {
print("School is cancelled.")
} else {
print("Our forecast generator is broken!")
}
๋งค์ฐ ๊ธธ๋ค. ๋งค์ฐ ์ฝ๊ธฐ ๊น๋ค๋ก์์ง๊ณ ํ๋์ ๋ค์ด์ค์ง ์๋๋ค. ํ๋์ ์ ๋ค์ด์ค๋ฉด ์ด์ฉ ์ ์์ง๋ง, ์ฌํํผ ์ธ๋ถ์ ์ผ๋ก ๋ฌธ์ ์ ์ ๋ถ์ํด๋ณด์๋ฉด
- ๋งค๋ฒ forecast๋ฅผ ๊ฒ์ฌํด์ผ ํ๋ค.
- . rain์ ๋ ๋ฒ ์ฌ์ฉํ์๊ณ ์ดํ ์ฒซ ๋ฒ์งธ rain์กฐ๊ฑด์ด ์คํจํ ๊ฒฝ์ฐ ์ํ๋๋ ๊ฒ์ด๊ธฐ์ ๋ ๋ฒ์งธ rain์กฐ๊ฑด์ด ์ ๋ ์ฌ์ค์ด ๋ ์ ์๋ค.
- . snow์ ๋ํ ์กฐ๊ฑด์ ์ ํ ํ์ธํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ๋ํ ๊ธฐ๋ฅ์ด ๋๋ฝ๋์๋ค.
์ด๋ ํ์ํ ๊ฒ์ด Switch์ด๋ค. ํญ์ ๊ทธ๋ฌ๋ฏ์ด ์์ ์์ ๋ฅผ ํ๋ฒ ๋ฐ๊ฟ๋ณด์.
switch forecast {
case .sun:
print("It should be a nice day.")
case .rain:
print("Pack an umbrella.")
case .wind:
print("Wear something warm")
case .snow:
print("School is cancelled.")
case .unknown:
print("Our forecast generator is broken!")
}
์! ๋ฑ ๋ณด๋ฉด ๋ฌธ์ฅ์ ์๊ฐ ๊ทน๋จ์ ์ผ๋ก ์์์ง๊ฑฐ๋ ๊ทธ๋ฐ ๊ฑด ์๋ค. ํ์ง๋ง ์์ ์ธ๊ธํ์๋ ๋ฌธ์ ์ 3๊ฐ์ง๋ฅผ ์๋ฒฝํ๊ฒ ๋ณด์ํ๋ฉด์ ์ฝ๊ธฐ์๋ ํจ์ฌ ํธ์ํด์ก๋ค. ์ด์ ์ ๊ฒฝ์ฐ forecast๋ฅผ ๋งค๋ฒ ๊ฒ์ฌํ์์ง๋ง, ์ง๊ธ์ ์ฒ์ switch์ ํ ๋ฒ๋ง ์ฌ์ฉํ๊ณ ์ดํ์ ์ฌ์ฉํ์ง ์๋๋ค. ๋ snow์ ๋ํด ๋๋ฝํ์ง ์๊ณ Weather์ด ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ case๋ค์ ์ ํํํ ์ ์๊ฒ ๋์๋ค.
Switch์์๋ ๋ค์๊ณผ ๊ธฐ๋ณธ ๊ฐ์ ์ง์ ํด๋ณผ ์ ์๋ค. ์๋ฅผ ๋ค์ด ๋ชจ๋ ์กฐ๊ฑด์ ๋ถํฉํ์ง ์๋ ๊ฒฝ์ฐ default:๋ฅผ ํตํด ์คํํ ์ ์๋ค.
let place = "Metropolis"
switch place {
case "Gotham":
print("You're Batman!")
case "Mega-City One":
print("You're Judge Dredd!")
case "Wakanda":
print("You're Black Panther!")
default:
print("Who are you?")
}
์ด ๊ฒฝ์ฐ place์ ํ ๋น๋์ด์๋ Metropolis์ ๋ํ ๋ถํฉํ๋ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ default๊ฐ ์คํ๋๋ค.
5. ์ผํญ ์กฐ๊ฑด๋ถ ์ฐ์ฐ์
Swift์์ ์กฐ๊ฑด์ ํ์ธํด๋ณด๋ ๋ง์ง๋ง ๋ฐฉ๋ฒ์ผ๋ก 3๊ฐ์ง์ ์ ๋ ฅ์ผ๋ก ์คํ ๋๊ฒ ๋๋ค.
enum Theme {
case light, dark
}
let theme = Theme.dark
let background = theme == .dark ? "black" : "white"
print(background)
์ฒ์ ๋ณด๋ฉด ์ด๊ฒ ๋ญ๊ฐ ์ถ์ == ๊ณผ ? ๊ฐ ๋์ ๋๋ค. ์ด๊ฒ ์ผํญ ์กฐ๊ฑด๋ถ ์ฐ์ฐ์๋ฅผ ์ค๋ช ํด์ฃผ๋ ์ข์ ์์ ์ธ๋ฐ ํ๋ฒ ํด์ํด๋ณด์.
Theme์ ๋ํ case๋ light, dark๋ก ์ด 2๊ฐ์ง์ด๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ theme์ case ์ค ํ๋์ธ dark๋ฅผ ๋์ ํ๊ฒ ๋๊ณ ์ด๋ฅผ ๋ค์ ๋ฐฑ๊ทธ๋ผ์ด๋์ ํ ๋นํ๋ค. ๊ทธ๋์ theme์ด. dark์ด๋? ํ๋ ์ง๋ฌธ์ ๋ง์ผ๋ฉด : ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ์๋ "black"์, ํ๋ฆฌ๋ฉด ๋ค์ ์๋ "white"๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๊ฐ ๊ฐ์ผ๋ก ํ ๋น๋ฐ๊ฒ ๋๋ค.
์ง๊ธ์ ๋ฑํ ์ค์ํด ๋ณด์ด์ง ์์ง๋ง ์ดํ ์์ ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ๋ ๋๊ฐ ์๋ค๊ณ ํ๋ ์์๋ ๋๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค!๐๐
learning by repetition
https://www.hackingwithswift.com/100/swiftui/5
Day 5 – 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.23 |
---|---|
๋ฐ๋ณต๋ฌธ (0) | 2022.07.15 |
Type annotations(ํ์ ์ถ๋ก ) (0) | 2022.07.12 |
๋ฐฐ์ด(2) (0) | 2022.07.11 |
๋ฐฐ์ด (0) | 2022.07.06 |