- ์ด๊ฑฐํ
Swift ์ด๊ฑฐํ์ ๋ค๋ฅธ ์ธ์ด์ ์ด๊ฑฐํ๊ณผ ๋ง์ด ๋ค๋ฅด๋ค. ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ง๋๊ณ ์์ด ์ ์์๋๊ณ ์ฌ์ฉํ๋ฉด ์ข๋ค.
- ์ ์ฌํ ์ข ๋ฅ์ ์ฌ๋ฌ ๊ฐ์ ํ ๊ณณ์ ๋ชจ์์ ์ ์ํ ๊ฒ์ด๋ค. ์) ์์ผ, ์, ๊ณ์ ๋ฑ
- enum ์์ฒด๊ฐ ํ๋์ ๋ฐ์ดํฐ ํ์ ์ผ๋ก, ๋๋ฌธ์ ์นด๋ฉ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฆ์ ์ ์ํ๋ค.
- ๊ฐ case๋ ์๋ฌธ์ ์นด๋ฉ์ผ์ด์ค๋ก ์ ์ํ๋ค.
- ๊ฐ case๋ ๊ทธ ์์ฒด๊ฐ ๊ณ ์ ์ ๊ฐ์ด๋ค.(๊ฐ case์ ์๋์ผ๋ก ์ ์๊ฐ์ด ํ ๋น๋์ง ์์)
- ๊ฐ case๋ ํ ์ค์ ๊ฐ๋ณ๋ก๋, ํ ์ค์ ์ฌ๋ฌ๊ฐ๋ ์ ์ํ ์ ์๋ค.
enum ์ด๋ฆ {
case ์ด๋ฆ1
case ์ด๋ฆ2
case ์ด๋ฆ3, ์ด๋ฆ4, ์ด๋ฆ5
// ...
}
// ์์
enum BoostCamp {
case iosCamp
case androidCamp
case webCamp
}
- ์ด๊ฑฐํ ์ฌ์ฉ
- ํ์ ์ด ๋ช ํํ ๊ฒฝ์ฐ, ์ด๊ฑฐํ์ ์ด๋ฆ์ ์๋ต ํ ์ ์๋ค.
- switch ๊ตฌ๋ฌธ์์ ์ฌ์ฉํ๋ฉด ์ข๋ค.
๋ชจ๋ ์ด๊ฑฐํ ์ผ์ด์ค๋ฅผ ํฌํจํ๋ฉด default๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ค.
- rawValue (์์๊ฐ)
- C ์ธ์ด์ enum ์ฒ๋ผ ์ ์๊ฐ์ ๊ฐ์ง ์ ์๋ค.
- rawValue๋ case๋ณ๋ก ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ ธ์ผํ๋ค.
- ์๋์ผ๋ก 1์ด ์ฆ๊ฐ๋ ๊ฐ์ด ํ ๋น๋๋ค.
- rawValue๋ฅผ ๋ฐ๋์ ์ง๋ ํ์๊ฐ ์๋ค๋ฉด ๊ตณ์ด ๋ง๋ค์ง ์์๋ ๋๋ค.
์ ์ ํ์ ๋ฟ๋ง ์๋๋ผ, Hashable ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ์ ์ ์์๊ฐ์ ํ์ ์ผ๋ก ์ง์ ํ ์ ์๋ค.
- ์์๊ฐ์ ํตํ ์ด๊ธฐํ
- rawValue๋ฅผ ํตํด ์ด๊ธฐํ ํ ์ ์๋ค.
- rawValue๊ฐ case์ ํด๋นํ์ง ์์ ์ ์์ผ๋ฏ๋ก, rawValue๋ฅผ ํตํด ์ด๊ธฐํ ํ ์ธ์คํด์ค๋ ์ต์ ๋ ํ์ ์ด๋ค.
- ๋ฉ์๋
Swift์ ์ด๊ฑฐํ์๋ ๋ฉ์๋๋ ์ถ๊ฐํ ์ ์๋ค.