如何限制生产者发出具有属性现有值的事件?



设置可变属性的值是否会导致生成者发出具有相同值的新事件?

换句话说,如果我不想要具有相同值的新事件,我需要这样做吗!= 检查?

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只能获取新值。

相关内容

  • 没有找到相关文章

最新更新