如何限制生产者发出具有 属性 现有值的事件?
How to limit producers from emitting events with property's existing value?
设置 MutableProperty 的值是否会导致生产者发出具有相同值的新事件?
换句话说,如果我不想要具有相同值的新事件,我需要这样做 != 检查吗?
let really = MutableProperty<Bool>(false)
func updateReality(newReality: Bool) {
if really.value != newReality {
really.value = newReality
}
}
属性总是发送新值,即使它与旧值相同。它必须是这种方式,否则你不能将它用于非 Equatable
类型。但是如果你正在处理一个 Equatable
类型,比如 Bool
,那么你可以在你的 属性 上使用 skipRepeats
operator 来创建一个新的 属性,它只接收新值,然后将 属性 公开给消费者:
let really = MutableProperty<Bool>(false)
let reallyWithNoRepeats = really.skipRepeats()
因此您可以通过 really.value
更新值,但消费者订阅 reallyWithNoRepeats
只能获取新值。
设置 MutableProperty 的值是否会导致生产者发出具有相同值的新事件?
换句话说,如果我不想要具有相同值的新事件,我需要这样做 != 检查吗?
let really = MutableProperty<Bool>(false)
func updateReality(newReality: Bool) {
if really.value != newReality {
really.value = newReality
}
}
属性总是发送新值,即使它与旧值相同。它必须是这种方式,否则你不能将它用于非 Equatable
类型。但是如果你正在处理一个 Equatable
类型,比如 Bool
,那么你可以在你的 属性 上使用 skipRepeats
operator 来创建一个新的 属性,它只接收新值,然后将 属性 公开给消费者:
let really = MutableProperty<Bool>(false)
let reallyWithNoRepeats = really.skipRepeats()
因此您可以通过 really.value
更新值,但消费者订阅 reallyWithNoRepeats
只能获取新值。