본문 바로가기

ReactiveX

Rx flatmap, map 차이점 예제

반응형

우선 map부터 보겠다.


val data = arrayOf("100", "300")
val a :Observable<Int> = Observable.fromArray(*data).map { value ->
value.toInt()
}.map { value ->
if (value > 200) {
return@map 3000
} else {
return@map 1000
}
}
a.subscribe{data -> System.out.println(data+1)}

map은 하나의 데이터를 가공하는 것을 말한다.

우선 data의 "100"을 map을 통해 인트로 형변환 한다.

또 한번 map을 통해 200보다 작으면 1000 크면 3000을 리턴한다.

subscribe를 통해 가공한 값들을 구독한다.



Observable.fromArray(*data).flatMap {
value ->
Observable.just(value.toInt())
}.map { value ->
if (value > 200) {
return@map 3000
} else {
return@map 1000
}
}.subscribe {
data -> System.out.println(data+1)
}


flatMap은 map과 달리 Observable형태로 값을 리턴하므로 이를 통해 just를 사용한다거나 다양한 형태로 재 가공을 할 수 있다.



반응형