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 是 a struct
,所以我不能使用protocol A: class {
解决方案
可能是编译器故障试试这个,你也可以让 struct B 一个类来覆盖值
var rr = (b as! B)
rr.b = 1.0
推荐阅读
- javascript - 为什么 Javascript string.replace("\n\t","xxx") 将 "\n\t" 替换为 "\nxxx"?
- python - python实现生产计划调度问题
- python - Python Cerberus:使用“anyof_schema”规则验证不同模式的问题
- keycloak - Keycloak 一次性访问令牌
- scala - 如何知道邮箱是空的以取消存储和发送低优先级消息?
- sql - 在 SQL 中,如何根据开始日期和经过的天数计算一年中的天数
- css - 将 input[type=text] 中的图标放在当前文本的右侧,可能吗?
- java - java 11 NoSuchMethodError javax.xml.soap.SOAPElement.addAttribute
- redux - 使用 Jest 在 Stencil 中使用 Redux 对 store.mapDispatchToProps 进行单元测试
- scala - Scala:使用排序特征错误地评估比较