在 Swift Combine 中使用 Publishers.debounce() 的正确语法是什么?

What is the correct syntax for using Publishers.debounce() in Swift Combine?

在 Apple 的 2019 年 WWDC 视频 Swift Combine in Practice 中,他们演示了使用 debounce 发布者来降低消息速率。

return $username
  .debounce(for: 0.5, scheduler: RunLoop.main)
  .removeDuplicates()
  .eraseToAnyPublisher()

但是,每当我尝试以类似方式使用它时,都会收到以下错误:

Cannot invoke 'debounce' with an argument list of type '(for: Double, scheduler: RunLoop)'

debounce() 签名是:

public func debounce<S>(for dueTime: S.SchedulerTimeType.Stride, 
                          scheduler: S,
                            options: S.SchedulerOptions? = nil) -> 
                                    Publishers.Debounce<Self, S> where S : Scheduler

SchedulerTimeType.Stride 似乎可以用数字初始化,但它对我不起作用,或者我对 Swift 泛型缺乏经验。

正确的称呼方法是什么?

编辑

this question...

的副本

目前,搜索像 "Combine" 这样的通用词是相当具有挑战性的...

macOS 10.15,Xcode11

documented debounce<S> 运算符接受类型 S.SchedulerTimeType.Stride,看起来像这样:

let sub = NotificationCenter.default
    .publisher(for: NSControl.textDidChangeNotification, object: filterField)
    .debounce(for: .milliseconds(500), scheduler: RunLoop.main)
    .subscribe(on: RunLoop.main)
    .assign(to:\MyViewModel.filterString, on: myViewModel)