Как мне изменить состояние объекта Single <T>реактивным способом? - PullRequest
0 голосов
/ 06 июля 2018

Как я могу переписать эту функцию реактивным способом (мне не очень нравится изменять объект в .doOnNext (:

Single<List<Integer>> getListSingle()
{
    return Observable.range(0, new Random().nextInt())
                     .toList()
                     .doOnSuccess(list -> {
                         if (list.size() < 10) {
                             list.add(123);
                         }
                     });
}

1 Ответ

0 голосов
/ 06 июля 2018

Случай кажется немного надуманным, но вы всегда можете скопировать неизменный объект в map:

Observable.range(0, new Random().nextInt())
        .toList()
        .map(integers -> {
            if (integers.size() < 10) {
                List<Integer> copy = new ArrayList<>(integers);
                copy.add(123);
                return copy;
            } else {
                return integers;
            }
        });
...