Map
Map은 변환 연산자의 일종으로, Observable이 emit한 item들을 변환하는 연산자Observable이 emit한 item들을 변환하는 연산자이다.
transform the items emitted by an Observable by applying a function to each item
➡️ Observable이 emit한 item에 func(함수)를 적용한다.
ReactiveX Map Doc의 마블 다이어그램이다. 이해하기 쉽게 코드로 바꿔서보자.
위의 과정을 Map연산자의 정의인 "emit한 item에 func(함수)를 적용"에 대입해서 이해해보자.
emit한 item에 : from 연산자를 이용해서 item(1,2,3)을 순차적으로 emit ➡️
func(함수)를 적용 : map 연산자를 이용해서 item들을 변환한다. (10 * $0)
출력은 당연하게 10,20,30순으로 출력 되고, onCompleted!, onDisposed!가 출력된다.
Filter
Filter는 필터링 연산자의 일종으로, Observable이 emit한 item을 변환하는 연산자이다.
emit only those items from an Observable that pass a predicate test
➡️ 테스트 조건을 만족하는 item들만 emit한다.
ReactiveX Map Doc의 마블 다이어그램이다. 이해하기 쉽게 코드로 바꿔서보자.
위의 과정을 Filter연산자의 정의인 "테스트 조건을 만족하는 item들만 emit"에 대입해서 이해해보자.
테스트 조건을 만족하는 item들 : $0 > 10이라는 테스트 조건을 만족하는 item만 ➡️
emit : emit한다. (30, 22, 60)
출력은 테스트 조건을 만족하는 item인 30,22,60만 emit함을 볼 수 있다.
사실 map과 filter는 Swift에 고차함수로 구현되어있다. Swift의 map, filter와 RxSwift의 map, filter는 거의 동일하다고 생각하고 이해하면 쉽다.
Reference
https://reactivex.io/documentation/operators/filter.html
https://reactivex.io/documentation/operators/map.html
'iOS > RxSwift' 카테고리의 다른 글
[iOS/RxSwift] Next, Error, Completed 처리하기 (0) | 2024.02.03 |
---|---|
[iOS/RxSwift] Subject가 무엇일까? (0) | 2024.02.03 |
[iOS/RxSwift] Operators - 생성 연산자 (create, just, of, from) (1) | 2024.02.03 |
[iOS/RxSwift] Marble Diagram (0) | 2024.02.01 |
[iOS/RxSwift] Disposable, DisposeBag (0) | 2024.02.01 |