RxJava’s combineLatest
is very convenient but I can use it difficultly because it has many overloads.
So I wrote the code snippet for combineLatest
.
<span>val</span> <span>name</span> <span>=</span> <span>PublishSubject</span><span>.</span><span>create</span><span><</span><span>String</span><span>>()</span><span>val</span> <span>age</span> <span>=</span> <span>PublishSubject</span><span>.</span><span>create</span><span><</span><span>Int</span><span>>()</span><span>// Can not omit Type parameters and BiFunction </span><span>Observable</span><span>.</span><span>combineLatest</span><span><</span><span>String</span><span>,</span> <span>Int</span><span>,</span> <span>String</span><span>>(</span><span>name</span><span>,</span> <span>age</span><span>,</span> <span>BiFunction</span> <span>{</span> <span>n</span><span>,</span> <span>a</span> <span>-></span> <span>"$n - age:${a}"</span> <span>})</span><span>.</span><span>subscribe</span><span>({</span><span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span><span>})</span><span>// If you introduce RxKotlin then you can use type inference</span><span>Observables</span><span>.</span><span>combineLatest</span><span>(</span><span>name</span><span>,</span> <span>age</span><span>)</span> <span>{</span> <span>n</span><span>,</span> <span>a</span> <span>-></span> <span>"$n - age:${a}"</span> <span>}</span><span>.</span><span>subscribe</span><span>({</span><span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span><span>})</span><span>// Also we can use Observable array for 1st parameter </span><span>// but second parameter to be array, it's not cool.</span><span>Observable</span><span>.</span><span>combineLatest</span><span>(</span><span>arrayOf</span><span>(</span><span>name</span><span>,</span> <span>age</span><span>),</span> <span>{</span><span>val</span> <span>n</span> <span>=</span> <span>it</span><span>[</span><span>0</span><span>]</span> <span>as</span> <span>String</span><span>val</span> <span>a</span> <span>=</span> <span>it</span><span>[</span><span>1</span><span>]</span> <span>as</span> <span>Int</span><span>"$n - age:${a}"</span> <span>})</span><span>.</span><span>subscribe</span><span>({</span><span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span><span>})</span><span>name</span><span>.</span><span>onNext</span><span>(</span><span>"saito"</span><span>)</span><span>age</span><span>.</span><span>onNext</span><span>(</span><span>24</span><span>)</span><span>name</span><span>.</span><span>onNext</span><span>(</span><span>"yoshida"</span><span>)</span><span>val</span> <span>name</span> <span>=</span> <span>PublishSubject</span><span>.</span><span>create</span><span><</span><span>String</span><span>>()</span> <span>val</span> <span>age</span> <span>=</span> <span>PublishSubject</span><span>.</span><span>create</span><span><</span><span>Int</span><span>>()</span> <span>// Can not omit Type parameters and BiFunction </span> <span>Observable</span><span>.</span><span>combineLatest</span><span><</span><span>String</span><span>,</span> <span>Int</span><span>,</span> <span>String</span><span>>(</span> <span>name</span><span>,</span> <span>age</span><span>,</span> <span>BiFunction</span> <span>{</span> <span>n</span><span>,</span> <span>a</span> <span>-></span> <span>"$n - age:${a}"</span> <span>})</span> <span>.</span><span>subscribe</span><span>({</span> <span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span> <span>})</span> <span>// If you introduce RxKotlin then you can use type inference</span> <span>Observables</span><span>.</span><span>combineLatest</span><span>(</span><span>name</span><span>,</span> <span>age</span><span>)</span> <span>{</span> <span>n</span><span>,</span> <span>a</span> <span>-></span> <span>"$n - age:${a}"</span> <span>}</span> <span>.</span><span>subscribe</span><span>({</span> <span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span> <span>})</span> <span>// Also we can use Observable array for 1st parameter </span> <span>// but second parameter to be array, it's not cool.</span> <span>Observable</span><span>.</span><span>combineLatest</span><span>(</span><span>arrayOf</span><span>(</span><span>name</span><span>,</span> <span>age</span><span>),</span> <span>{</span> <span>val</span> <span>n</span> <span>=</span> <span>it</span><span>[</span><span>0</span><span>]</span> <span>as</span> <span>String</span> <span>val</span> <span>a</span> <span>=</span> <span>it</span><span>[</span><span>1</span><span>]</span> <span>as</span> <span>Int</span> <span>"$n - age:${a}"</span> <span>})</span> <span>.</span><span>subscribe</span><span>({</span> <span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span> <span>})</span> <span>name</span><span>.</span><span>onNext</span><span>(</span><span>"saito"</span><span>)</span> <span>age</span><span>.</span><span>onNext</span><span>(</span><span>24</span><span>)</span> <span>name</span><span>.</span><span>onNext</span><span>(</span><span>"yoshida"</span><span>)</span>val name = PublishSubject.create<String>() val age = PublishSubject.create<Int>() // Can not omit Type parameters and BiFunction Observable.combineLatest<String, Int, String>( name, age, BiFunction { n, a -> "$n - age:${a}" }) .subscribe({ Log.d("combineLatest", "onNext - ${it}") }) // If you introduce RxKotlin then you can use type inference Observables.combineLatest(name, age) { n, a -> "$n - age:${a}" } .subscribe({ Log.d("combineLatest", "onNext - ${it}") }) // Also we can use Observable array for 1st parameter // but second parameter to be array, it's not cool. Observable.combineLatest(arrayOf(name, age), { val n = it[0] as String val a = it[1] as Int "$n - age:${a}" }) .subscribe({ Log.d("combineLatest", "onNext - ${it}") }) name.onNext("saito") age.onNext(24) name.onNext("yoshida")
Enter fullscreen mode Exit fullscreen mode
© 版权声明
THE END
暂无评论内容