powerful ํ enum์ ์ ๋ฆฌํด๋ณด์.
(๋ณธ ์ ๋ฆฌ ๋ด์ฉ์ Stanford iOS๋ฅผ ๋ฐํ์ผ๋ก ํฉ๋๋ค.)
enum์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ์กฐํด ์ฃผ์ธ์.
[Swift] ์ด๊ฑฐํ(Enumerations)
์ด๊ฑฐํ์ด๋ ? ๊ณตํต๋ ์ฃผ์ ๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๋ค์ ๋ชจ์ ๋ํ๋ด๋ ์๋ฃํ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์๋ฅผ๋ค์ด ๋ด๊ฐ ํ๋ก๊ทธ๋๋ฐ ํ ๋ด์ฉ์ด ๊ณผ์ผ์ ๊ดํ ๊ฒ์ด๊ณ ์์ผ๋ก ๊ณผ์ผ ๋ณ์๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ค๊ณ ์๊ฐ
990427.tistory.com
์ฐ๋ฆฌ๋ ๊ณ์ฐ๊ธฐ operation ๊ตฌํ์ ์ํด์ ๋ค์๊ณผ ๊ฐ์ด ์ด๊ฑฐํ ๋ณ์๋ฅผ ๋ง๋ค์๋ค.
์ฌ๊ธฐ์ associated value๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ type์ ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , value๋ฅผ ์ง์ ํ ์ ์๋ค.
์๋ operation ๋์ ๋๋ฆฌ๋ฅผ ๋ณด๋ฉด, value๊ฐ associated value๋ฅผ ์ด์ฉํด ๊ฐ๊ฐ π์ e๋ก์จ ์ฌ์ฉํ๊ณ ์๋ค.
enum Operation {
case Constant(Double)
case UnaryOperation
case BinaryOperation
case Equals
}
var operations = [
"π" : Operation.Constant(Double.pi),
"e" : Operation.Constant(M_E),
"√" : Operation.UnaryOperation,
"cos" : Operation.UnaryOperation
]
์๋ swith๋ฌธ์ ์ฃผ๋ชฉํ์.
(operation์ ๋์ ๋๋ฆฌ๋ผ ์ต์ ๋ ์ถ์ถ ํด์ผํ๋ค)
case ์์ Operation.Constant๊ฐ ์๋ .Constant๋ฅผ ์ฐ๋ ์ด์ ๋, ํ์ ์ถ๋ก ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ ์ฝ๋์ ๊ฐ์ด (let value)๋ฅผ ํตํด ํด๋น ๊ฐ์ ํ๋ผ๋ฏธํฐ ํํ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค !
func performOperation(symbol : String) {
if let operation = operations[symbol] {
switch operation {
case .Constant(let value) : accumulator = value
case .UnaryOperation : break
case .BinaryOperation : break
case .Equals : break
}
}
}
๊ทธ๋ผ ํ๋ผ๋ฏธํฐ value๋ [symbol] key์ ํด๋นํ๋ ๊ฐ์ ๊ฐ์ง๊ณ ์ค๊ฒ ๋ ๊ฒ์ด๋ค.
operation["π"] ๋ผ๋ฉด .Constant(let value) ์ value๋ Double.pi๊ฐ ๋ ๊ฒ์ด๋ค.
'๐ฑ iOS > ์ธ๊ฐ & ์ฑ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Stanford iOS] ๋ฒ์ ๋ฌธ์ ์ ์ํ ๊ฐ์ข error ํด๊ฒฐ (0) | 2022.05.05 |
---|