Scala 不带任何参数的订阅

Scala 不带任何参数的订阅,scala,rx-scala,Scala,Rx Scala,我需要编写一些RxScala代码,从Scala Swing中的文本字段创建一个可观察的。 在查看Github之后,我编写了以下代码,看起来很有效: def textValues: Observable[String] = Observable.create[String](observer => { observer.onNext(field.text) Subscription() }) 其中field.text给出该字段中文本的当前状态 但我不明白这句话: Subscri

我需要编写一些RxScala代码,从Scala Swing中的文本字段创建一个
可观察的
。 在查看Github之后,我编写了以下代码,看起来很有效:

def textValues: Observable[String] = Observable.create[String](observer => {
  observer.onNext(field.text)
  Subscription()
})
其中
field.text
给出该字段中文本的当前状态

但我不明白这句话:

  Subscription()
此订阅有什么用?它不需要任何参数,所以我假设它不能用于取消订阅我创建的可观察对象,因为它甚至没有引用这个可观察对象

那么
Subscription()
有什么好处呢


为什么不需要任何参数?

首先,回答您关于线路的问题:

Subscription()
它创建一个空订阅,即当调用
unsubscribe
时,订阅不执行任何操作(而不是取消注册事件侦听器)

其次,请注意,您正在使用“老式”的方式创建可观察对象:

@已弃用(“改用[[Observable.apply]],“0.26.2”)
def create[T](f:Observer[T]=>Subscription):可观察的[T]
新方法是这样的:

def-apply[T](f:Subscriber[T]=>单位):可观察[T]
它对应于RxJava的
可观察。create
。 如果要使用此方法注册
取消订阅
操作,应使用
Subscriber.add(Subscription)

第三,让我指出,它定义了Swing事件的所有类型的可观察对象,因此您不必自己重新实现它们。它是用Java编写的,但很容易与Scala兼容,例如,在中可以看到