所以下面的代码用errror编译
var doneSubscription: Disposable = item.doneSubjectObservable
.debug("doneSubscriptions")
.subscribe(
onNext: {
done in self.validateDone(done: done, item: item)
}).disposed(by: disposeBag)
类型'()'的值不符合指定类型'Disposable' 在线.disposed(by:disposeBag)
但我可以毫无错误地做到这一点:
var doneSubscription: Disposable = item.doneSubjectObservable
.debug("doneSubscriptions")
.subscribe(
onNext: {
done in self.validateDone(done: done, item: item)
})
doneSubscription.disposed(by: disposeBag)
我所做的就是将.disposed(by: disposeBag)
移出订阅链。
我错过了什么,这两种方法不相同吗?
答案 0 :(得分:4)
不,它们不相同。
在第一种情况下,您将整个表达式的返回值存储到doneSubscription
,Disposable
类型的变量:
item.doneSubjectObservable
.debug("doneSubscriptions")
.subscribe(
onNext: {
done in self.validateDone(done: done, item: item)
}).disposed(by: disposeBag)
由于disposed(by:)
没有返回任何内容,因此会出错。
但是,在第二种情况下,您实际上为变量Disposable
分配了doneSubscription
- subscribe
的返回值。
要修复您的第一种情况,只需删除变量声明即可。