removeDuplicates는 발행된 이전 값과 현재 값을 비교하여 동일할 경우 현재 값을 무효화합니다.

기능

사용

[1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1].publisher
  .removeDuplicates()
  .sink { completion in
    print(completion)
  } receiveValue: { value in
    print(value)
  }
  .store(in: &cancellables)

  
// 결과
1
2
1
finished

처음 연속되는 1의 가장 첫 번째 이후의 1들은 이전 발행값과 동일하므로 무시되고

새로운 숫자 2 역시 처음의 값만 발행되는 값만 발행됩니다. 이후 동일한 값 2는 무시됩니다.

다시 새로운 값 1이 나타나므로 이 값만 발행되고 이후 값들은 무시됩니다.

Just는 이 메서드가 쓰이기 어려운데 단일 발행만 지원하는 Publisher이기 때문입니다.

Just([1,1,1,1,1,1,1])
  .removeDuplicates()
  .sink { completion in
    print(completion)
  } receiveValue: { value in
    print(value)
  }
  .store(in: &cancellables)
  

// 결과
[1,1,1,1,1,1,1]