powerful ํ enum์ ์ ๋ฆฌํด๋ณด์.
(๋ณธ ์ ๋ฆฌ ๋ด์ฉ์ Stanford iOS๋ฅผ ๋ฐํ์ผ๋ก ํฉ๋๋ค.)
enum์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ์กฐํด ์ฃผ์ธ์.
์ฐ๋ฆฌ๋ ๊ณ์ฐ๊ธฐ 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 |
---|