๋ฐ์ํ
์ด๊ฑฐํ
- ๊ด๋ จ๋ ๊ฐ์ผ๋ก
- case๊ฐ์ผ๋ก string, character, integer, floting ๊ฐ๋ค์ ์ฌ์ฉ
- ๊ณ์ฐ๋ ํ๋กํผํฐ(computed properties)๋ฅผ ์ ๊ณตํ๊ฑฐ๋ ์ด๊ธฐํ๋ฅผ ์ง์ ํ๊ฑฐ๋, ์ด๊ธฐ ์ ์ธ์ ํ์ฅํด ์ฌ์ฉ ๊ฐ๋ฅ
์ด๊ฑฐํ ๋ฌธ๋ฒ
- ์์ ๊ฐ(Raw Values)์ด ์๋ ์ด๊ฑฐํ
enum CompassPoint {
case north
case south
case east
case west
}
//์ฝค๋ง(,)๋ฅผ ๊ตฌ๋ถํด ํ์ค๋ก ์ ์
enum CompassPoint {
case north, south, east, west
}
var directionToHead = CompassPoint.west
var directionToHead: CompassPoint = .west
/*CompassPoint๋ก ํ๋ฒ ์ ์๋๋ฉด ๋ค์์ ๊ฐ์ ํ ๋นํ ๋ ํ์ ์๋ตํ
์ ๋ฌธ๋ฒ(dot syntax)์ ์ด์ฉํด ๊ฐ์ ํ ๋นํ๋ ์ถ์ฝํ ๋ฌธ๋ฒ์ ์ฌ์ฉ ๊ฐ๋ฅ*/
directionToHead = .east
- ์์ ๊ฐ(Raw Values)์ด ์๋ ์ด๊ฑฐํ
- Number type
//enum ์ ์ธ ์ ํ์
์ ๋ช
์ํ๋ฉด ์ฒซ case๋ถํฐ 0๋ถํฐ 1์ฉ ์ฆ๊ฐ๋ ๊ฐ์ผ๋ก ์ ์ธ๋จ
enum Position: Int{
case top //0
case right //1
case bottom //2
case left //3
}
//์์๊ฐ ์ง์ ์ง์ , ์์๊ฐ์ด ์๋ case๋ ์ด์ case์ ์์๊ฐ์์ 1 ์ฆ๊ฐ๋ ๊ฐ์ผ๋ก ์ ์ธ๋จ
enum Position: Int{
case top = 1
case right = 10
case bottom //11
case left = 20
}
//Double, Floatํ์
์ผ๋ก ์ ์ธ ์ ์์๊ฐ์ ์๋ตํ๋ ค๋ฉด ์ด์ case์ ์ ์ ์
๋ ฅํด์ผ ํจ
enum Position: Double{
case top = 1.0 //1.0
case right = 10.1 //10.1
case bottom = 2 //2.0
case left //3.0
}
- Charater type
//๋ชจ๋ case์ ๋ํ ์์๊ฐ์ ์ง์ ์ ์ธํด ์ฃผ์ด์ผ ํจ
enum Position: Character{
case top = "t"
case right = "r"
case bottom = "b"
case left = "l"
}
- String type
//์์๊ฐ์ ์๋ตํ ๊ฒฝ์ฐ case ์ด๋ฆ์ด ์์๊ฐ์ผ๋ก ์์ฑ๋จ
enum Position: String{
case top = "t" //t
case right //right
case bottom //buttom
case left = "l" //l
}
- ์์ ๊ฐ์ ์ ๊ทผ
print(Position.right.rawValue) //right
//Raw Value๋ฅผ ํตํด์ ์ด๊ฑฐํ์ ์์ฑ
var user = Position.init(rawValue: "l") //์ต์
๋ ํ์
โ
๊ด๋ จ ๊ฐ (Associated Values)
- case์ custom type์ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ์ฅ
- ๊ฐ์ ํ์ด์ง๋ง, ๋ค๋ฅธ ํํ์ ๊ฐ์ ๊ฐ๋ case๋ฅผ ์์ฑ ๊ฐ๋ฅ
- case์์ tuple ํํ๋ก type์ ๋ช ์
//Named Tuple
enum Product{
case smartphone(model: String, storage: Int)
case computer(model: String, size: Int)
case pad (model: String)
}
var produt: Product = .smartphone(model: "iphone", storage: 256)
//Unnamed Tuple
enum Product{
case smartphone(String, Int)
case computer(String, Int)
case pad (String)
}
var product = Product.smartphone("iphone", 256)
- switch-case๋ฌธ์์ ํ์ฉ
switch product{
case .pad("ipad"): break //์ฐ๊ด๊ฐ์ด ipad์ด๋ฉด ๋งค์นญ
case .pad: break //์ฐ๊ด๊ฐ ๋ฌด์
case .smartphone("iphone", _): break //์ฐ๊ด๊ฐ ์๋ต ๊ฐ๋ฅ
case .smartphone(let model, let storage): break //์ฐ๊ด๊ฐ ์์(๋ณ์) ๋ฐ์ธ๋ฉ
case let .computer(model, size): break //๋ชจ๋ ์ฐ๊ด๊ฐ์ ์์๋ก ๋ฐ์ธ๋ฉ ์ let์ ๋งจ ์์ผ๋ก ๋บ ์ ์์
}
๋ฐ์ํ
'โจ๏ธ Language > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] Codility Lesson2 - CyclicRotation (0) | 2022.07.23 |
---|---|
[Swift] Codility Lesson1 - BinaryGap (0) | 2022.07.23 |
[Swift] ํจ์(Functions) (0) | 2021.12.02 |
[Swift] ์ ์ด๋ฌธ(Control Flow) (0) | 2021.11.26 |
[Swift] ๋ฐ์ดํฐ ํ์ (2) (0) | 2021.11.25 |