强制降级后无法分配类型不变的表达式

时间:2018-07-18 14:57:21

标签: swift

代码如下:

protocol A {
    var a: Double { get set }
}

struct B: A {
    var a: Double = 1
    var b: Double = 2
}

class C {

    var b: A = B()

    func setValue(_ value: Double) {
        b.a = value
        (b as! B).b = 1 // got an error
    }

}

如何设置b.b中的setValue值?尝试进行设置时,出现编译错误:

  

不能分配给'Double'类型的不可变表达式

我的B是struct,所以我不能使用protocol A: class {

1 个答案:

答案 0 :(得分:1)

可能是编译器故障尝试此方法,您也可以使struct B成为覆盖值的类

 var rr =  (b as! B)

 rr.b = 1.0