访问方法之外的计算属性

时间:2017-05-11 09:37:40

标签: swift

我在一个类中有一个泛型函数,其中声明了一个计算属性:

 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;现在问题是,如何将计算属性设为全局,并从类方法中对其进行更改?或者,如何从函数外部访问类方法中定义的计算属性?

1 个答案:

答案 0 :(得分:0)

问题是dictionaryValue不是类的计算属性,它只是在setOperand函数中声明的变量,因此无法从函数外部访问它。

您应该将其声明为类的存储属性,并在调用setOperand时更改它。