์๋ ํ์ธ์ ๊ฐ์์ ๋๋ค. ์ค๋ ๋๋์ด! ์ด๊ฑฐํ์ ๋ํ ๊ธฐ์ด ๋ฌธ๋ฒ์ ์์๋ด ์๋ค. ์์ ๊ณต๋ถํ ๋ ํญ์ ๊ตฌ์กฐ์ฒด, ํด๋์ค, ์ด๊ฑฐํ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค~~ ์ด๋ฐ์์ ๋ฌธ๊ตฌ๊ฐ ๋ง์ด ๋ฑ์ฅํ๋๋ฐ์, ์ด๊ฑฐํ์ด ๊ณผ์ฐ ์ด๋ค๊ฒ์ผ์ง ๊ถ๊ธํ์ต๋๋ค. ์ด๊ฑฐํ์ ๋ํด์ ์์๋ณด๋๋ก ํ์ฃ ! ๊ทธ๋ผ ๊ณ !!
์ด๊ฑฐํ์ด๋?
์ด๊ฑฐํ์ด๋, ์ฐ๊ด์ฑ์ด ์๋ ๊ฐ์ ๋ชจ์ ๋์ ๊ฒ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, ๋ด ์ฌ๋ฆ ๊ฐ์ ๊ฒจ์ธ ๊ฐ์ด ์ฐ๊ด๋ ํญ๋ชฉ๋ผ๋ฆฌ ๋ฌถ์ด ๋์ ๊ฒ์ ์๋ฏธํ๋ค. ๊ทธ๋ผ ์ค์ํํธ์์๋ ์ด๊ฑฐํ์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์๋ณด์.
์ด๊ฑฐํ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ enum์ด๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ๋ค.
import Foundation
enum CompassPoint {
case north, south, east, west
}
// ์ด๋ ๊ฒ ์ด๊ฑฐํ์ ๋ง๋ค๋ฉด, ํ๋์ ์๋ก์ด ํ์
์ฒ๋ผ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
// ๊ทธ๋์ enum์ ๊ผญ ๋๋ฌธ์๋ก ์์ฑํด์ผํ๋ค. CampusPoint์ฒ๋ผ!
var direction = CompusPoint.east // direction๋ณ์๋ฅผ east๋ก ์ง์ ํ๋ค.
//๊ฐ์ ๋ณ๊ฒฝํด๋ณด์.
direction = .west
// direction๋ณ์๊ฐ west๋ก ๋ฐ๋์๋ค.
์์์ ํ๋ฒ ์ ์ธ๋ direction์, ๊ฐ์ ๋ณ๊ฒฝํ ๋ (.) ๋ง ์จ๋ ์ ์ฒ๋ผ ์๋์ผ๋ก CompassPoint์์ ์ถ๋ก ํ๊ฒ ๋๋ค.
switch๊ตฌ๋ฌธ์์ ์ฌ์ฉํ๋ ์ด๊ฑฐํ
์ด๋ ๊ฒ ์ค์์น ๊ตฌ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ณ์์ ๋ค์ด์๋ ์ด๊ฑฐํ ํญ๋ชฉ์ด ์ด๋ค ํญ๋ชฉ์ธ์ง ๋น๊ต๊ฐ ์ฉ์ดํ๋ค.
switch direction {
case .north:
print("north")
case .south:
print("south")
case .east:
print("east")
case .west:
print("west")
}
//prints "west"
์ด๊ฑฐํ์ ์์๊ฐ ๊ฐ๊ฒ ํ๊ธฐ
์ด๊ฑฐํ์ ๊ฐ ํญ๋ชฉ์, ์์ฒด๋ก๋ ํ๋์ ๊ฐ์ด์ง๋ง, ํญ๋ชฉ์ ์์๊ฐ์ ๊ฐ๊ฒ ํ ์ ๋ ์๋ค. ์ฆ, ํน์ ํ์ ์ผ๋ก ์ง์ ๋ ๊ฐ์ ๊ฐ์ง ์ ์๋ค. ๊ทธ๋ผ ์ด์ ํน์ ๊ฐ์ ๊ฐ์ง CompassPoint ์ด๊ฑฐํ ํญ๋ชฉ์ ์์๊ฐ์ ๊ฐ์ง ์ ์๋๋ก ์ฝ๋๋ฅผ ์์ฑํด๋ณด์.
enum CompassPoint: String {
case north = "๋ถ"
case south = "๋จ"
case east = "๋"
case west = "์"
}
์ ์ฝ๋๋ stringํํ์ ์์๊ฐ์ ๊ฐ๊ฒ ํ์๋ค. ๋ณดํต ๋ค๋ฅธ ์ธ์ด์ ์ด๊ฑฐํ์์๋, int ํ์์ ์์๊ฐ๋ง์ ๊ฐ์ง ์ ์์ง๋ง swift๋ ๋ค์ํ ํ์ ์ ์์๊ฐ์ ๊ฐ์ง ์ ์๋ค.
์ด๊ธฐํ๋ ์์๊ฐ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด, rawValue๋ผ๋ ํ๋กํผํฐ๋ฅผ ํตํด ๊ฐ์ ธ์ฌ ์ ์๋ค.
switch direction {
case .north:
print(direction.rawValue)
case .south:
print(direction.rawValue)
case .east:
print(direction.rawValue)
case .west:
print(direction.rawValue)
}
//prints "์"
์์๊ฐ์ ๊ฐ์ง๊ณ ์ด๊ฑฐํ์ ๋ฐํํ๊ฒ ํ ์๋ ์๋ค.
let direction2 = CompassPoint(rawValue: "๋จ")
//prints "south"
south๋ผ๋ ์ด๊ฑฐํ ํญ๋ชฉ์ด ์ถ๋ ฅ๋๋ค.
์ด๊ฑฐํ์ ์ฐ๊ด๊ฐ ๊ฐ๊ฒ ํ๊ธฐ
์์ ๋ก ํธ๋ํฐ์ ์๋ฌ๋ฅผ ์ ์ํ๋ ์ด๊ฑฐํ์ ๋ง๋ค๊ณ , ์์์๋ ์๋ฌ๋ฅผ ๋ปํ๋ unknown๊ณผ ๋ฐฐํฐ๋ฆฌ ๋ฐฉ์ ์ ๋ปํ๋ betteryLow๋ฅผ ์์ฑํ์. ๊ทธ๋ฆฌ๊ณ ํญ๋ชฉ ์์ ์ฐ๊ด๊ฐ์ ํ์ ์ ์๊ดํธ๋ก ๋ฌถ์ด์ฃผ๋ฉด ๋๋ค.
์ฐ๊ด๊ฐ์ ์ถ์ถํ๊ธฐ ์ํด์๋ switch๋ฌธ์ด๋ if๋ฌธ์ ํ์ฉํด์ผํ๋ค. ๊ทธ๋ผ switch๋ฅผ ํ์ฉํ์ฌ ์ฐ๊ด๊ฐ์ ์ถ์ถํด๋ณด์.
์๊ดํธ ์์ ์ฐ๊ด๊ฐ์ ์ ๋ฌ๋ฐ์ ์์๋ฅผ ์ ์ธํด์ฃผ๋ฉด ๋๋ค. error๋ betteryLow๋ก ์ธํ ์๋ฌ์ด๊ธฐ ๋๋ฌธ์, ๋ฐฐํฐ๋ฆฌ๊ฐ ๋ฐฉ์ ๋ฉ๋๋ค ๋ผ๋ ๋ฉ์ธ์ง๊ฐ ์ถ๋ ฅ๋๋ค.
'Swift > Swift BASIC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ๊ธฐ์ด ๋ฌธ๋ฒ - ์์ธ์ฒ๋ฆฌ (throws, do-catch, try) (0) | 2022.01.23 |
---|---|
[Swift] ๊ธฐ์ด ๋ฌธ๋ฒ - ์ต์ ๋ ์ฒด์ด๋ (Optional Chaining) (ํจ์์ ๋์ ๋๋ฆฌ-()?, []?, ?()?, ?[]?) (0) | 2022.01.20 |
[Swift] ๊ธฐ์ด ๋ฌธ๋ฒ - extension(ํ์ฅ) (0) | 2022.01.20 |
[Swift] ๊ธฐ์ด ๋ฌธ๋ฒ - ํ๋กํ ์ฝ (protocol) (0) | 2022.01.19 |
[Swift] ๊ธฐ์ด ๋ฌธ๋ฒ - assert (0) | 2022.01.19 |