바로 어제 takeWhile이 filter와 같은 동작을 하는 줄 알고 실수를 했는데 오늘 본 내용에서 다루고 있네요. 조건에 따라 .next 이벤트에 제약을 가하는 방법을 배웁니다.
Ignoring operators
- ignoreElements() - 모든 .next 이벤트를 무시합니다. .completed와 .error는 전달합니다.
- elementAt(_ index: Int) - index에 해당하는 .next 이벤트만 전달합니다. 전달 직후 .completed 이벤트가 발생합니다.
- filter(_ predicate: @escaping (E) throws -> Bool) - predicate closure가 true를 리턴하는 .next 이벤트만 전달합니다.
Skipping operators
- skip(_ count: Int) - count 만큼의 .next 이벤트를 무시합니다. 이후의 모든 이벤트는 그대로 전달합니다.
- skipWhile(_ predicate: @escaping (E) throws -> Bool) - predicate closure가 true를 리턴하는 한 .next 이벤트를 무시합니다. false를 리턴하면 해당 이벤트를 포함하여 이후의 모든 이벤트를 그대로 전달합니다.
- skipUntil(_ other: O) - 트리거에 해당하는 other observable이 .next 이벤트를 방출할 때까지 .next 이벤트를 무시합니다. other observable이 .next 이벤트를 방출하면, 이후의 모든 이벤트를 그대로 전달합니다.
Taking operators
- take(_ count: Int) - count 만큼의 .next 이벤트를 전달합니다. 전달 직후 .completed 이벤트를 방출합니다.
- takeWhile(_ predicate: @escaping (E) throws -> Bool) - predicate closure가 true를 리턴하는 한 .next 이벤트를 전달합니다. false를 리턴하면 해당 이벤트를 전달하지 않고 .completed 이벤트를 방출합니다.
- takeUntil(_ other: O) - 트리거에 해당하는 other observable이 .next 이벤트를 방출할 때까지 .next 이벤트를 전달합니다. other observable이 .next 이벤트를 방출하면, completed 이벤트를 방출합니다.
Distinct operators
- distintUntilChanged() - 연속으로 동일한 element를 가진 .next 이벤트가 들어올 경우 무시합니다. 동일한 element인지를 판정하기 위해 element는 Equatable을 conform해야만 합니다. 직전에 전달받은 element와 다른 element가 들어올 경우 .next 이벤트를 전달합니다.
- distintUntilChanged(_ comparer: @escaping (E, E) throws -> Bool) - 연속으로 동일 element를 가진 .next 이벤트가 들어올 경우 무시합니다. 동일한 element인지를 판정하기 위해 comparer closure를 사용합니다. true를 리턴할 경우 동일한 element로 판단해 무시하며, false를 리턴할 경우 .next 이벤트를 전달합니다.
댓글 영역