设置可变属性的值是否会导致生成者发出具有相同值的新事件?
换句话说,如果我不想要具有相同值的新事件,我需要这样做吗!= 检查?
let really = MutableProperty<Bool>(false)
func updateReality(newReality: Bool) {
if really.value != newReality {
really.value = newReality
}
}
属性始终发送新值,即使它与旧值相同。它必须是这种方式,否则你不能将其与非Equatable
类型一起使用。但是,如果要处理Equatable
类型(如 Bool
),则可以使用属性上的 skipRepeats
运算符创建仅接收新值的新属性,然后将该属性公开给使用者:
let really = MutableProperty<Bool>(false)
let reallyWithNoRepeats = really.skipRepeats()
因此,您将通过 really.value
更新值,但消费者订阅reallyWithNoRepeats
只能获取新值。