" μ¨ μ°μ£Όκ° λλ₯Ό λλ λΆμ " λλ νλ μ£ΌλΌ! μ£ΌλΌμ€!
μ€λμ λΌμΉμμ νμ§ μΌμ£ΌμΌμ΄ μ§λμ μ΄λμ κ° μ μκ² λμμ΄μ!
μμΉ¨μ μΌμ΄λ μ΄λμ λ€λ μλλ μ’ λ κ°μ΄νκ² μμΉ¨ 곡λΆλ₯Ό μμν μ μκ² λλΌκ΅¬μ!!!
κ·Όλ°λ μ μ 10μκ° λμ΄μ TILμ μ°κ³ μμκΉμ..?γ γ γ γ γ γ μλ¬Έ..
μ΄μ μ TILμμ ν΄κ²°ν΄μΌνλ λ¬Έμ κ° μμμ£ ?!?!
νκ°μ§μ λ³μμ λΆλͺ¨ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό λμ νκ³ , κ·Έ λ³μλ₯Ό μμ ν΄λμ€λ‘ λ€μ΄μΊμ€ν νμ¬ λ©μλλ₯Ό μ¬μ©νλ €κ³ ν λ,
κ²½μ°μ λ°λΌ λ€λ₯Έ λ€μ΄ μΊμ€ν μ νμ¬ μ§ννλ©΄ μλλμ§.. μλλ€λ©΄ μ μλλμ§..!!!!
μκΈ° μ κΉμ§ μ΄κ±Έ μ΄λ»κ² νλ©΄ ν μ μμκΉμ λν΄μ μκ°ν΄λ΄€λ κ² κ°μμ.
β¨ μ΄μ μ λ¬Έμ κ° κΆκΈνμλ€λ©΄ μ΄μ μ TILμ μ°Έκ³ ν΄μ£ΌμΈμ
class Calculator {
var firstNumber: Int = 0
var secondNumber: Int = 0
var op: Character?
init(firstNumber: Int, secondNumber: Int, op: Character? = nil) {
self.firstNumber = firstNumber
self.secondNumber = secondNumber
self.op = op
}
func calculate() -> Double {
var operation = AbstractOperation()
// π¨Error
//if op == "+" { operation as! AddOperation4 }
//else if op == "-" { operation as! SubtractOperation4 }
//else if op == "/" { operation as! DivideOperation4 }
//else if op == "*" { operation as! MultiplyOperation4 }
//else if op == "%" { operation as! ModulusOperation4 }
//else { return 0.0 }
return operation.calculate(firstNumber, secondNumber)
}
}
μ μ μλλ operationμ΄λΌλ νλμ λ³μμ AbstractOperationμ΄λΌλ ν΄λμ€λ₯Ό μμλ°λ AddOperation, SubtractOperation, DivideOperation, MultiplyOperation, ModulusOperation μ μμ ν΄λμ€λ₯Ό κ°κ°μ μν©μ λ§κ² λμ νμ¬ operation.calculateλΌλ ν¨μλ λ± νλ²λ§ μ¬μ©νκ³ μΆμμ΄μ.
μ΄μ μ μ€λ₯ ν΄κ²°μ "μ΄ μλμ λν ν΄κ²°"μ΄ μλμμ΄μ. μ΄μ λ opμ λ³κ²½μ λ°λΌ μν©μ λ§κ² μΈμ€ν΄μ€λ₯Ό λ°λ‘ μμ±νμ¬ κ·Έλλ§λ€ ν¨μλ₯Ό μΆλ ₯νμ¬ μ€λ₯λ₯Ό ν΄κ²°νμ΄μ. μλμ κ°μ΄
func calculate() -> Double {
guard let op = op else { return 0.0 }
switch op {
case "+" :
return AddOperation4().calculate(firstNumber, secondNumber)
case "-" :
return SubtractOperation4().calculate(firstNumber, secondNumber)
case "/" :
return DivideOperation4().calculate(firstNumber, secondNumber)
case "*" :
return MultiplyOperation4().calculate(firstNumber, secondNumber)
case "%" :
return ModulusOperation4().calculate(firstNumber, secondNumber)
default :
print("κ³μ°κΈ°μ μ‘΄μ¬νμ§ μλ μ°μ°μμ
λλ€.")
return 0.0
}
}
ν .. μ΄κ±΄ λ΄κ° μνλ λ°©μμ΄ μλλ°..
κ·Έλμ μ κ° μνλ μλλλ‘ ν μ μλ λ°©λ²μ΄ μμ§ μμκΉμ λν κ³ λ―Όμ μΆ©λΆν ν ν ν΄κ²°λμ§ μμ νν ¨λμ μ°Ύμκ°μ΄μ.
ν΄κ²° μλ£!!
λ€μ΄ μΊμ€ν μ νκΈ° μν΄μλ AddOperation()μ μ΅μ λ νμ μΌλ‘ μ μΈλ λ³μκ° νμνκΈ° λλ¬Έμ κ·Έλ κ² λλ©΄ μλ‘μ΄ λ³μλ₯Ό λ§λ€μ΄μΌνλ μ κ° μλν λ°( νλμ λ³μλ‘ μμ ν΄λμ€ ν λΉ ) μ ν μ μμλ κ±°μμ. κ·Έλ¬λ λ€μ΄ μΊμ€ν μΌλ‘ νΈλ κ² μλμλ κ±°μ£ !!
λ³μλ λΆλͺ¨ ν΄λμ€μ νμ μ κ°μ§κ³ μλ λΆλͺ¨ ν΄λμ€μ μΈμ€ν΄μ€μ΄κΈ° λλ¬Έμ λΆλͺ¨ ν΄λμ€μ ν¨μμ μ κ·Όμ΄ κ°λ₯ν©λλ€. λν μΈμ λ μ§ μμ ν΄λμ€μ μΈμ€ν΄μ€λ λ μ μλ κ±°μ£ ! κ·Έλμ ν κ°μ§μ λ³μμ μ°μ°μ λ°λ₯Έ λ€μν ν΄λμ€λ₯Ό ν λΉν μ μμμ΅λλ€. calculateλΌλ ν¨μλ λΆλͺ¨ ν΄λμ€μ μ μκ° λμ΄ λͺ¨λ μμ ν΄λμ€κ° μ€λ²λΌμ΄λ©ν ν¨μμ΄κΈ° λλ¬Έμ calculator.calculate(firstNumber, secondNumber)λ₯Ό ν΄λ μλ¬κ° λμ§ μμ΅λλ€!
κ²°κ΅ calculatorλΌλ λ³μλ λΆλͺ¨ ν΄λμ€μ νμ
μ κ°μ§κ³ μμ§λ§ μμ ν΄λμ€μ μΈμ€ν΄μ€μΈκ±°μ£ .
class Calculator {
var firstNumber: Int = 0
var secondNumber: Int = 0
init(firstNumber: Int, secondNumber: Int) {
self.firstNumber = firstNumber
self.secondNumber = secondNumber
}
func calculate(_ op: String) -> Double {
// μΆμνλ λΆλͺ¨ ν΄λμ€λ₯Ό νμ
μΌλ‘ κ°μ§λ λ³μ
var calculator: AbstractOperation
// μ°μ°μ λ°λ₯Έ μμ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό ν λΉ
switch op {
case "+" :
calculator = AddOperation()
case "-" :
calculator = SubtractOperation()
case "/" :
calculator = DivideOperation()
case "*" :
calculator = MultiplyOperation()
case "%" :
calculator = ModulusOperation()
default :
print("μλͺ»λ μ°μ°μ
λλ€.")
return 0.0
}
return calculator.calculate(firstNumber, secondNumber)
}
}
μ΄λ κ² λ€μ νμμ΄μ!!
μ¬μ€ case λ§λ€ breakλ₯Ό λΆμ¬μ£Όμμλλ°, μ€λ switch λ¬Έμμ μμ£Ό μμΈνκ² switchλ₯Ό λ―μ΄λ³΄κ³ 볡μ΅μ νκ±°λ μ?! κ·Έλ¬λλ μ€μννΈμμμ switchλ μλ°μ νμ΄μ¬κ³Όλ λ¬λ¦¬ μΌμ΄μ€λ§λ€ breakλ₯Ό ν΄μ£Όμ§ μμλ λλ€κ³ νλ€μ©! κ·Έλμ μΌλ₯Έ λΌλ²λ Έμ΄μ γ γ γ γ
μν΄.. μ΄μ λ λ€λ¦¬ λ»κ³ μ μ μκ² λ€μ!
λ°μ΄λ°μ΄~!
μ΄μ μ»κ³ μμΌκ² μ΄μ! γ γ