Подтвердить что ты не робот

Есть ли способ не инициировать значение init переменной <t> ?

См. Ниже код.

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. Могу ли я сделать это? Или я должен отложить код в момент, когда я его использую?

4b9b3361

Ответ 1

Вы можете использовать оператор .skip для подавления N первого элемента. Таким образом, в вашем случае skip(1) будет подавлять значение init.

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