파라미터를 통해서 compose를 활용하는 방법에 대해서 알아보자.
우선 다음과 같은 내용이 있다.
Observable.just("Alpha", "Beta", "Gamma", "Delta", "Epsilon")
.collect( StringBuilder::new , (b,s) -> {
if ( b.length() == 0)
b.append(s);
else
b.append("/").append(s);
})
.map(StringBuilder::toString)
.subscribe(System.out::println);
====================================================================
Alpha/Beta/Gamma/Delta/Epsilon
주어진 문자열에 뒤에 "/" 을 추가를 해주는 아주 간단한 내용이다.
이 내용을 Compose
로 변경시..
Observable.just("Alpha", "Beta", "Gamma", "Delta", "Epsilon")
.compose(joinToString("/"))
.subscribe(System.out::println);
public static ObservableTransformer<String , String> joinToString(String separator) {
return upstream -> upstream
.collect( StringBuilder::new , (b,s) -> {
if ( b.length() == 0)
b.append(s);
else
b.append(separator).append(s);
})
.map(StringBuilder::toString)
.toObservable();
}
구분자를 넘겨서 공통함수로 뺄수 있다.
이런식으로 인자값을 넣어서 자주쓰는 함수를 자기만의 커스텀함수로 빼서 사용하도록 하자. (리팩토링도 할겸..)
하지만 주의 사항이 있다. 이러한 커스텀을 사용시 여러번의 Subscriber에서 자원을 공유하는 버그등이 발생될 수 있다.
이 부분에 대해서 피할 수 있는지 좀 더 알아보는 시간을 다음에 가져보자.
'스터디 > RxJava2' 카테고리의 다른 글
[RxJava2]연산자를 오버로딩해서 구현해보자. (0) | 2017.10.22 |
---|---|
[RxJava] Transform에서 공유 부분 피하기 (0) | 2017.10.22 |
[RxJava2]Compose 활용 (0) | 2017.10.22 |
[RxJava2]Transformer 활용 (0) | 2017.10.22 |
[RxJava2]Flowable을 직접 커스텀해보자. (0) | 2017.10.22 |