Slide 114
Slide 114 text
class Changing: Observable {
typealias ObservedValue = Value
private var accumulator: Value
private var changes: Changes
init
(observing observed: Observed,
startingFrom initial: Value,
accumulateWith accumulate:
(Observed.ObservedValue, Value) -> Value)
{
accumulator = initial
changes = Changes()
observed.observe(withContext: self){ (context, value in
context.accumulator = accumulate(value, context.accumulator)
context.changes.announce(change: context.accumulator)
}
}
}