[Swift] [Commbin] 흐름에서 Reduce () 처리를 재생하려는 경우 -> scan () 를 사용합니다!
reduce()의 복습
reduce() 수조의 수치를 합계할 때 다음과 같다.
let sum = [1, 2, 3, 4].reduce(0) { $0 + $1 }
print("sum: \(sum)") // sum: 10
이 계산 과정을 Combine의 흐름으로 재생하고 싶을 때scan()를 사용하면 간단하게 쓸 수 있다.scan()으로 봐봐.
scan()의 사용 방법과 reduce()의 사용 방법은 매우 비슷하다.
다음은 예입니다.
var cancellables = Set<AnyCancellable>()
[1, 2, 3, 4].publisher
.scan(0) { $0 + $1 }
.sink {
print("result: \($0)")
} receiveValue: {
print("output: \($0)")
}
.store(in: &cancellables)
// 出力
// output: 1 ← 0 + 1
// output: 3 ← 1 + 2
// output: 6 ← 3 + 3
// output: 10 ← 6 + 4
// result: finished
다른 예도 다음과 같다.[1, 2, 3, 4].publisher
.scan([]) { $0 + [$1] }
.sink {
print("result: \($0)")
} receiveValue: {
print("output: \($0)")
}
.store(in: &cancellables)
// 出力
// output: [1]
// output: [1, 2]
// output: [1, 2, 3]
// output: [1, 2, 3, 4]
// result: finished
이상.
Reference
이 문제에 관하여([Swift] [Commbin] 흐름에서 Reduce () 처리를 재생하려는 경우 -> scan () 를 사용합니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ikuraikura/articles/2022-02-06-combine-scan텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)