我在一个类中有一个泛型函数,其中声明了一个计算属性:
class CalculatorBrain {
var internalProgram = [AnyObject]()
var accumulator: Double = 0.0
var variableValues: Dictionary<String,Double> = [:]
func setOperand<T> (operand: T) {
if operand is Double {
accumulator = operand as! Double
internalProgram.append(operand as AnyObject)
}
else if variableName == operand as? String {
var dictionaryValue: Double? {
get {
return variableValues[variableName!]
}
set {
accumulator = newValue!
internalProgram.append(newValue! as AnyObject)
}
}
}
}
我想将dictionaryValue设置为视图控制器中显示的值:
private var brain = CalculatorBrain()
@IBAction func setVariableValue(_ sender: UIButton) {
brain.dictionaryValue = displayValue
}
显然我不能,因为dictionaryValue是本地定义的,&#34;类型CalculatorBrain的值没有memeber dictionaryValue&#34;现在问题是,如何将计算属性设为全局,并从类方法中对其进行更改?或者,如何从函数外部访问类方法中定义的计算属性?
答案 0 :(得分:0)
问题是dictionaryValue不是类的计算属性,它只是在setOperand函数中声明的变量,因此无法从函数外部访问它。
您应该将其声明为类的存储属性,并在调用setOperand时更改它。