Dostaję taki sam efekt przy użyciu Observable.just vs Observable.from w następującym przypadku:RxJava - Just vs Od
public void myfunc() {
//swap out just for from here and i get the same results,why ?
Observable.just(1,2,3).subscribe(new Subscriber<Integer>() {
@Override
public void onCompleted() {
Log.d("","all done. oncompleted called");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Integer integer) {
Log.d("","here is my integer:"+integer.intValue());
}
});
}
myślałem właśnie został 'tylko' rzekomo emitują pojedynczy element i "od" miało emitować przedmioty na jakiejś liście. Co za różnica ? Zauważyłem również, że "tylko" i "od" przyjmuje tylko ograniczoną liczbę argumentów. więc Observable.just (1,2,3,4,5,6,7,8, -1, -2) jest w porządku, ale Observable.just (1,2,3,4,5,6,7,8, -1, -2, -3) zawodzi. Tak samo jest z, muszę zawinąć go na liście lub tablicy rodzajów. Jestem tylko ciekawy, dlaczego nie potrafią zdefiniować nieograniczonej liczby argumentów.
UPDATE: Eksperymentowałem i zobaczyłem, że "just" nie przyjmuje struktury tablicowej, "po prostu" przyjmuje argumenty. "z" zabiera kolekcję. więc następujące działa dla "z", ale nie dla "tylko":
public Observable myfunc() {
Integer[] myints = {1,2,3,4,5,6,7,8,-1,-2,9,10,11,12,13,14,15};
return Observable.just(myints).flatMap(new Func1<Integer, Observable<Boolean>>() {
@Override
public Observable<Boolean> call(final Integer integer) {
return Observable.create(new Observable.OnSubscribe<Boolean>() {
@Override
public void call(Subscriber<? super Boolean> subscriber) {
if(integer.intValue()>2){
subscriber.onNext(integer.intValue()>2);
}
}
});
}
});
}
Zakładam, że to jest wyraźna różnica, prawda?
Pomogło to zakończyć około 45 minut zamieszania. Dzięki! – Josh