Merge pull request #5 from 0xLeif/develop 0.3.0 Release
Merge pull request #5 from 0xLeif/develop
0.3.0 Release
Chain of events
Use an enum to structure the call stack.
public indirect enum Chain { case end case complete(E.Function?) case link(E.Function, Chain) case background(E.Function, Chain) case multi([Chain]) }
let output = Chain.link( .out { "First" }, .link( .in { print("Value: \($0)") }, .multi( [ .multi( [ .end, .end, .end ] ), .link( .out { "Link" }, .link( .out { "Last" }, .complete( .inout { value in guard case .string(let value) = value else { XCTFail() return .void } return .string("\(value) !!!") } ) ) ) ] ) ) ) .run(name: "ChainTests-testOutput")
(lldb) po output ▿ Variable ▿ array : 2 elements ▿ 0 : Variable - string : "First" ▿ 1 : Variable ▿ array : 2 elements - 0 : E.Variable.void ▿ 1 : Variable ▿ array : 2 elements ▿ 0 : Variable ▿ array : 3 elements ▿ 0 : Variable ▿ array : 1 element - 0 : E.Variable.void ▿ 1 : Variable ▿ array : 1 element - 0 : E.Variable.void ▿ 2 : Variable ▿ array : 1 element - 0 : E.Variable.void ▿ 1 : Variable ▿ array : 2 elements ▿ 0 : Variable - string : "Link" ▿ 1 : Variable ▿ array : 2 elements ▿ 0 : Variable - string : "Last" ▿ 1 : Variable ▿ array : 1 element ▿ 0 : Variable - string : "Last !!!"
(lldb) po output.flatten ▿ Variable ▿ array : 8 elements ▿ 0 : Variable - string : "First" - 1 : E.Variable.void - 2 : E.Variable.void - 3 : E.Variable.void - 4 : E.Variable.void ▿ 5 : Variable - string : "Link" ▿ 6 : Variable - string : "Last" ▿ 7 : Variable - string : "Last !!!"
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
Chain ⛓
Chain of events
Use an enum to structure the call stack.
Example Code
Normal Chain Output
Flattened Chain Output