代码之家  ›  专栏  ›  技术社区  ›  GuessWho

强制向下强制转换后无法分配给类型为的不可变表达式

  •  0
  • GuessWho  · 技术社区  · 7 年前

    代码如下:

    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是A struct ,所以我不能用 protocol A: class {

    1 回复  |  直到 7 年前
        1
  •  1
  •   Shehata Gamal    7 年前

     var rr =  (b as! B)
    
     rr.b = 1.0