2017-04-19 68 views
8

請參閱下面的代碼。有沒有辦法不觸發變量<T>的init值?

class ViewController4: UIViewController { 
    var disposeBag = DisposeBag() 
    let v = Variable(0) 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     v.asObservable() 
      .subscribe(onNext: { print($0) }) 
      .disposed(by: disposeBag) 

     v.value = 1 
    } 
} 

當它運行時,它會打印

0 
1 

不過,我不希望它在0運行,或者說0只是用來啓動v值。我可以這樣做嗎?或者我必須在使用它的時間推遲代碼?

回答

14

您可以使用運算符.skip來抑制N個第一個元素。所以在你的情況下,skip(1)會壓縮初始值。

http://reactivex.io/documentation/operators/skip

v.asObservable().skip(1) 
     .subscribe(onNext: { print($0) }) 
     .disposed(by: disposeBag) 

v.value = 1 
//Output : 1 

v.value = 2 
v.value = 3 
//Output : 1 2 3 
+0

非常好,謝謝你。 –

相關問題