【发布时间】:2015-10-04 19:12:43
【问题描述】:
我遇到以下代码问题:
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 })
}
init() 完成后,字典knownOps 包含以下内容:
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
我的问题是:为什么binaryOperations 在字典中被捕获为Operands?
【问题讨论】:
-
如何查看
knownOps的内容?通过调试器?还是打印出来? -
我通过 Xcode 中的调试器检查了它。
标签: swift dictionary enums key