Skip to content

0.0.2

Latest
Compare
Choose a tag to compare
@0xLeif 0xLeif released this 17 Mar 00:00
9e04c70

Modifiable callChain

public class ObservedValue<T> {
    private(set) public var value: T?
    
    public var callChain: Chain = .end
    public var didChangeHandler: Chain?
    
    public init(value: T? = nil) {
        self.value = value
        self.callChain = .complete(
            .out { [weak self] in
                self?.didChangeHandler?.run(name: "ObservedValue<\(T.self)>.didChangeHandler") ?? .void
            }
        )
    }

    @discardableResult
    public func update(value: T) -> Variable {
        self.value = value
        
        return callChain.run(name: "ObservedValue<\(T.self)>.callChain")
    }
}