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]