본문 바로가기
2023년 이전/ReativeX

RxJava, RxKotlin - Scan 함수

by JeongUPark 2020. 1. 15.
반응형

[출처 - RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드 까지 한번에]

본 글은 'RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드 까지 한번에' 를 학습하면서 정리한 글입니다

 

마블다이어그램 참고 - http://reactivex.io/RxJava/javadoc/io/reactivex/Flowable.html#scan-io.reactivex.functions.BiFunction-

 

scan 함수는 reduce 함수화 비슷합니다. reduce 함수는 모든 데이터가 입력 후 그것을 종합하여 1개의 데이터만 발행한다면, scan 함수는 실행 할때마다 입력 값에 맞는 중간 결과 및 최종 결과를 발행합니다. 글 보다는 마블다이어 그램이 더 잘 이해될 것입니다.

 

test code를 확인 해보 겠습니다.

Java

import io.reactivex.Observable;

public class scan_test {

    public static void main(String[] args){

        String[] balls = {"1","2","3"};
        Observable source = Observable.fromArray(balls).scan((ball1,ball2)->
                ball2+"("+ball1+")");
        source.subscribe(System.out::println);
    }
}

 

kotlin

import io.reactivex.rxkotlin.toObservable

fun main(){
    val balls = arrayOf("1","2","3")
    val source = balls.toObservable().scan{ ball1,ball2 -> "$ball2($ball1)"}
    source.subscribe{it->println(it)}
}

결과는

1
2(1)
3(2(1))

이렇게 나타납니다.

반응형

'2023년 이전 > ReativeX' 카테고리의 다른 글

RxJava, RxKotlin - CombineLatest 함수  (0) 2020.01.17
RxJava, RxKotlin - zip 함수  (0) 2020.01.16
RxJava,RxKotlin - groupBy 함수  (0) 2020.01.14
RxJava,RxKotlin - switchMap  (0) 2020.01.14
RxJava, RxKotlin - concatMap  (0) 2020.01.14