]>
Commit | Line | Data |
---|---|---|
1 | import Foundation | |
2 | ||
3 | final class Store<State, Action>: ObservableObject { | |
4 | @Published private(set) var state: State | |
5 | ||
6 | private let reducer: Reducer<State, Action> | |
7 | ||
8 | init(initialState: State, reducer: @escaping Reducer<State, Action>) { | |
9 | self.state = initialState | |
10 | self.reducer = reducer | |
11 | } | |
12 | ||
13 | func send(_ action: Action) { | |
14 | reducer(&state, action) | |
15 | } | |
16 | } | |
17 | ||
18 | typealias Reducer<State, Action> = (inout State, Action) -> Void |