ios - 如果它与之前的值相似,则忽略最后一个值,运算符组合框架
问题描述
我有一个已发布的布尔属性,然后我订阅该发布者,每次布尔值更改时,我的发布者都会发送一个新值
@Published var booleanProperty: Bool = false
let subscription = $booleanProperty
.sink { newBool in
print(newBool)
}
我的问题是,如果它与最新的相似,是否有运营商忽略出版价值。
像发布者发送 [true,true, false, false] 我只是得到 [true,false]
解决方案
你需要removeDuplicates
:
let subscription = $booleanProperty
.removeDuplicates()
.sink { newBool in
print(newBool)
}
从文档(强调我的):
仅发布与前一个元素不匹配的元素。
[...]
因为二元内存只考虑当前元素和前一个元素,所以运算符打印示例数据中的最后一个 0,因为它的直接前任是 4。
let numbers = [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 0] cancellable = numbers.publisher .removeDuplicates() .sink { print("\($0)", terminator: " ") } // Prints: "0 1 2 3 4 0"
推荐阅读
- excel - Excel VBA SAP GUI 脚本查找行索引
- google-chrome - OnHistoryStateUpdated 仅在访问 Facebook 时创建 chrome 扩展
- android - ARCore : 增强图像和条形码识别 android
- python - 值和过去窗口之间的滚动比较,带有百分位数/分位数
- boost-hana - 是否可以将integral_constant 转换为hana::string
- javascript - 如何使用 Jest 测试 localStorage
- units-of-measurement - 可以在 groff 请求中使用数字寄存器吗?
- python - 使用正则表达式在文本文件中分隔单词
- assembly - 装配异常处理
- python-3.x - Python转换时区偏差