본 내용은 필자가 학습한 내용을 정리하는 내용입니다. 대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다! RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에 저자님의 블로그 https://brunch.co.kr/@yudong#info |
reduce() 함수
상황에따라 발행된 데이터를 취합하여 어떤 결과를 만들어 낼 때는 reduce 계열의 함수를 사용합니다
reduce()함수의 마블다이어그램
출처 - http://reactivex.io/documentation/operators/reduce.html
Observable을 이용해 들어오는 데이터를 1개씩 모아서 최종 결과를 만들어야 할 때 사용한다고 생각하면 됩니다. 주로 수치관련된 계산문제에 활용됩니다.
reduce() 함수의 활용 예
source.subscribe(System.out::println);
실행결과
5(3(1))
Maybe 클래스 -Single 클래스와 마찬가지로 최대 데이터 하나를 가질 수 있지만
데이터 발행 없이 바로 데이터 발생을 완료(Single 클래스는 1개 완료, Maybe 클래스는 0 혹은 1개 완료)할 수도 있습니다.
redube()함수의 원형을 보면 Function 이 아니라 BiFunction 인터페이스를 인자로 활용합니다
public final Maybe<T> reduce(BiFunction<T,T,T> reducer)
람다표현식에서 인자의 개수가 2개 이상일 때는 괄호로 인자 목록을 명시적으로 표현해줘야 합니다.
ball1,ball2)->ball2 +"("+ball1+")"
reduce() 함수의 람다 표현식 분리 예
source.subscribe(System.out::println);
BiFunction<String, String, String>은 인자인 ball1,ball2 및 함수의 리턴 타입이 모두 String 임을 의미합니다.
'Rx' 카테고리의 다른 글
리액티브연산자[생성연산자]-7(interval함수) (0) | 2018.12.26 |
---|---|
리액티브연산자 -6(데이터 쿼리하기,map,filter,reduce 함수) (0) | 2018.12.24 |
리액티브연산자 -4 (filter함수,first,last,take,skip) (0) | 2018.12.24 |
리액티브연산자 -2( flatMap함수) (0) | 2018.12.24 |
리액티브연산자 -1( map함수) (0) | 2018.12.24 |
댓글