gpt4 book ai didi

kotlin - Rxjava - 如何获取当前和上一个项目?

转载 作者:行者123 更新时间:2023-12-05 02:07:13 30 4
gpt4 key购买 nike

如何使用运算符让我始终获得以前和当前的值?如果可能的话,我想避免在管道外创建状态。

- time ->
1 2 3 4
| | | |
Operations
| | |
(1,2) (2,3) (3,4)

请注意,除了第一个和最后一个值之外的每个值都必须出现两次,因此简单的缓冲区是行不通的。

我考虑过将 skipmergebuffer 结合使用,但 merge 似乎不能保证顺序。

val s = PublishSubject.create<Int>()
s.mergeWith(s.skip(1)).buffer(2).subscribe{i -> print(i)}
s.onNext(1)
s.onNext(2)
s.onNext(3)
s.onNext(4)


output:
[1, 2][2, 3][3, 4]

val o = Observable.just(1,2,3,4)
o.mergeWith(o.skip(1)).buffer(2).subscribe{i -> print(i)}

output:
[1, 2][3, 4][2, 3][4]

(唯一的 4 很好,在意料之中)

最佳答案

看起来你仍然可以使用缓冲区:

Observable.just(1, 2, 3, 4)
.buffer(2, 1)
.subscribe { println(it) }

// prints
// [1, 2]
// [2, 3]
// [3, 4]
// [4]

关于kotlin - Rxjava - 如何获取当前和上一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62023546/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com