为 Combine 框架提供额外功能的 Swift 库。
封装值的引用类型,并允许发布对其的更改。
struct State: Equatable {
var counter: Int
var toggle: Bool
}
@ValueSubject
var subject: State = .init(counter: 0, toggle: false)
@ValueSubject
var newCounterSubject: Int
_newCounterSubject = _subject.observe(keyPath: \.counter)
var newCounterStates: [Int] = []
$newCounterSubject.sink { state in
newCounterStates.append(state)
}.store(in: &observers)
newCounterSubject += 1 // will trigger subject update