简体   繁体   English

Swift Combine:没有“distinct”运算符?

[英]Swift Combine: no `distinct` operator?

Seems like Combine (shipped with Xcode 11 beta 7) lacks adistinct operator?似乎Combine(随Xcode 11 beta 7 一起提供)缺少distinct运算符?

Can anyone help me build one?谁能帮我建一个? :) :)

.removeDuplicates() is equivalent to .distinctUntilChanged() .removeDuplicates()等价于.distinctUntilChanged()

You can do the following to get .distinct() .您可以执行以下操作来获取.distinct()

@available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
extension Publisher where Self.Output : Equatable {
    public func distinct() -> AnyPublisher<Self.Output, Self.Failure> {
        self.scan(([], nil)) {
            $0.0.contains($1) ? ($0.0, nil) : ($0.0 + [$1], $1)
        }
        .compactMap { $0.1 }
        .eraseToAnyPublisher()
    }
}

嗯,我真傻,有一个叫做RemoveDuplicates ,它链接到方法removeDuplicates()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM