实例方法
try
tryRemoveDuplicates(by:)
仅发布与前一个元素不匹配的元素,由提供的 error-throwing 闭包评估。
声明
func tryRemoveDuplicates(by predicate: @escaping (Self.Output, Self.Output) throws -> Bool) -> Publishers.TryRemoveDuplicates<Self>
返回值
使用(而不是发布)重复元素的发布者。
参数
predicate
用于评估两个元素是否等效的闭包,用于过滤。从此闭包中返回
true
以指示第二个元素是第一个元素的副本。如果此闭包抛出错误,则发布者会以抛出的错误终止。
详述
使用 Publisher/tryRemoveDuplicates(by:)
根据您提供的 error-throwing 闭包对元素的评估,从上游发布者中删除重复元素。如果您的闭包引发错误,则发布者会因错误而终止。
在下面的示例中,提供给 Publisher/tryRemoveDuplicates(by:)
的闭包在两个连续元素相等时返回 true
,从而过滤掉 0
、 1
、 2
和 3
。但是,闭包在遇到 4
时会引发错误。然后发布者终止并出现此错误。
struct BadValuesError: Error {}
let numbers = [0, 0, 0, 0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
cancellable = numbers.publisher
.tryRemoveDuplicates { first, second -> Bool in
if (first == 4 && second == 4) {
throw BadValuesError()
}
return first == second
}
.sink(
receiveCompletion: { print ("\($0)") },
receiveValue: { print ("\($0)", terminator: " ") }
)
// Prints: "0 1 2 3 4 failure(BadValuesError()"
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
相关用法
- Swift Optional.Publisher tryReduce(_:_:)用法及代码示例
- Swift Optional.Publisher tryDrop(while:)用法及代码示例
- Swift Optional.Publisher tryAllSatisfy(_:)用法及代码示例
- Swift Optional.Publisher tryPrefix(while:)用法及代码示例
- Swift Optional.Publisher tryFirst(where:)用法及代码示例
- Swift Optional.Publisher tryScan(_:_:)用法及代码示例
- Swift Optional.Publisher tryFilter(_:)用法及代码示例
- Swift Optional.Publisher tryMax(by:)用法及代码示例
- Swift Optional.Publisher tryContains(where:)用法及代码示例
- Swift Optional.Publisher tryCompactMap(_:)用法及代码示例
- Swift Optional.Publisher tryMap(_:)用法及代码示例
- Swift Optional.Publisher tryLast(where:)用法及代码示例
- Swift Optional.Publisher tryMin(by:)用法及代码示例
- Swift Optional.Publisher tryCatch(_:)用法及代码示例
- Swift Optional.Publisher throttle(for:scheduler:latest:)用法及代码示例
- Swift Optional.Publisher timeout(_:scheduler:options:customError:)用法及代码示例
- Swift Optional.Publisher reduce(_:_:)用法及代码示例
- Swift Optional.Publisher debounce(for:scheduler:options:)用法及代码示例
- Swift Optional.Publisher breakpoint(receiveSubscription:receiveOutput:receiveCompletion:)用法及代码示例
- Swift Optional.Publisher mapError(_:)用法及代码示例
- Swift Optional.Publisher catch(_:)用法及代码示例
- Swift Optional.Publisher zip(_:_:_:)用法及代码示例
- Swift Optional.Publisher sink(receiveValue:)用法及代码示例
- Swift Optional.Publisher scan(_:_:)用法及代码示例
- Swift Optional.Publisher assertNoFailure(_:file:line:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Optional.Publisher tryRemoveDuplicates(by:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。