Android
[Rx] 2. 연산자[2]
졸꾸맨
2020. 5. 9. 11:58
1. map
- 입력받은 데이터를 어떤 함수나 로직에 의해 데이터를 가공한다.
private val listIntArray = arrayOf(1,2,3,4,5,6,7,8,9)
fun AA() =
Observable.fromArray(*listIntArray)
.map { it+1 }
.subscribe(::println)
//결과값
2
3
4
5
6
7
8
9
10
listIntArray 리스트의 원소값에 +1을 더해 콘솔에 출력해주는 코드이다.
map을 통해 입력받은 입력값에 +1로 데이터를 새로운 데이터로 가공한다.
2. filter
- 입력받은 데이터에서 원하는 데이터만 걸러낸다.
fun BB()=
Observable.range(1,200)
.filter{ it % 10 == 0 }
.subscribe(::println)
//결과 값
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
range를 이용하여 1, 200의 숫자를 입력받고 filter를 이용하여 입력받은 값을 10과 나눠 0이나 오는 입력데이터를 걸러낸다.
*** 비슷한 함수들 ***
- first(default) : Observable의 첫 번째 값을 필터, 값이 없이 완료되면 기본값을 리턴
- last(default) : 마지막 값을 리턴
- take(N) : 처음 부터 N개의 값을 리턴
- takelast(N) : 마지막 부터 N개의 값을 리턴
- skip(N) : 처음 부터 N개의 값을 스킵
- skiplast(N) : 마지막 으로부터 N개의 값을 스킵
3. reduce
- 발해한 데이터를 모두 사용하여 데이터를 취합하여 발행한다
fun CC() =
Observable.range(1,10)
.reduce{ item1,item2 -> item1*item2 }
.subscribe(::println)
//결과값
3628800
range를 이용하여 1,10을 입력하고 입력받은 데이터를 reduce를 이용하여 이전 아이템과 현재 아이템을 더 중첩으로 곱해준다. 해서 3628800으로 결과값이 나온다. 다음과 같은 계산이다.
1 × 2 × 3 × 4 × 5 × 6 × 7 × 8 × 9 × 10