首页 > 解决方案 > 强制向下转换后无法分配给类型的不可变表达式

问题描述

这是代码:

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.bsetValue?当我尝试设置它时,出现编译错误:

无法分配给“Double”类型的不可变表达式

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

标签: swift

解决方案


可能是编译器故障试试这个,你也可以让 struct B 一个类来覆盖值

 var rr =  (b as! B)

 rr.b = 1.0 

推荐阅读