I am having problems with the following code:
private enum Op : Printable {
case Operand(Double)
case Constant(String, Double)
case Variable(String)
case UnaryOperation(String, Double -> Double)
case BinaryOperation(String, (Double, Double) -> Double)
var description: String {
get {
switch self {
case .Operand(let operand):
return "\(operand)"
case .Constant(let constant, _):
return constant
case .Variable(let variable):
return variable
case .UnaryOperation(let symbol, _):
return symbol
case .BinaryOperation(let symbol, _):
return symbol
}
}
}
}
private var knownOps = [String:Op]()
init() {
func learnOp(op: Op) {
knownOps[op.description] = op
}
learnOp(Op.Constant("π", M_PI))
learnOp(Op.UnaryOperation("√", sqrt))
learnOp(Op.UnaryOperation("sin", sin))
learnOp(Op.UnaryOperation("cos", cos))
learnOp(Op.UnaryOperation("±") { -1 * $0 })
learnOp(Op.BinaryOperation("×", *))
learnOp(Op.BinaryOperation("÷") { $1 / $0 })
learnOp(Op.BinaryOperation("+", +))
learnOp(Op.BinaryOperation("-") { $1 - $0 })
}
After init () completes, the dictionary knownOpscontains the following:
knownOps [String : Calculator.CalculatorModel.Op] 9 key/value pairs
[0] _DictionaryElement<String, Calculator.CalculatorModel.Op>
key String "×"
value Calculator.CalculatorModel.Op Operand Operand
[1] _DictionaryElement<String, Calculator.CalculatorModel.Op>
key String "+"
value Calculator.CalculatorModel.Op Operand Operand
[2] _DictionaryElement<String, Calculator.CalculatorModel.Op>
key String "÷"
value Calculator.CalculatorModel.Op Operand Operand
[3] _DictionaryElement<String, Calculator.CalculatorModel.Op>
key String "π"
value Calculator.CalculatorModel.Op Constant Constant
[4] _DictionaryElement<String, Calculator.CalculatorModel.Op>
key String "-"
value Calculator.CalculatorModel.Op Operand Operand
[5] _DictionaryElement<String, Calculator.CalculatorModel.Op>
key String "±"
value Calculator.CalculatorModel.Op UnaryOperation UnaryOperation
[6] _DictionaryElement<String, Calculator.CalculatorModel.Op>
key String "sin"
value Calculator.CalculatorModel.Op UnaryOperation UnaryOperation
[7] _DictionaryElement<String, Calculator.CalculatorModel.Op>
key String "√"
value Calculator.CalculatorModel.Op UnaryOperation UnaryOperation
[8] _DictionaryElement<String, Calculator.CalculatorModel.Op>
key String "cos"
value Calculator.CalculatorModel.Op UnaryOperation UnaryOperation
My question is: why is it binaryOperationwritten like Operandin a dictionary?
source
share