이번 시간에는 파라미터를 통해서 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에서 자원을 공유하는 버그등이 발생될 수 있다.
다음시간에는 이 점을 대해서 살펴보고 어떻게 피할수 있는지 알아보자.