Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A declaritive swift state machine.

License

NotificationsYou must be signed in to change notification settings

nicholascross/StateTransition

Repository files navigation

nicholascrossGitHub releaseSwift 5.1.xplatforms

A declaritive swift state machine.

Example state machine definition

enumStateOfMatter:StateTransitionable{typealiasAction=EnergyTransfercase solidcase liquidcase gascase plasmavartransitions:Transitions{when(.increase){transition(from:.solid, to:.liquid)transition(from:.liquid, to:.gas)transition(from:.gas, to:.plasma)}when(.decrease){transition(from:.plasma, to:.gas)transition(from:.gas, to:.liquid)transition(from:.liquid, to:.solid)}}}enumEnergyTransfer{case increasecase decrease}

Example state machine usage

varstateMachine=StateOfMatter.solid.stateMachine()guardlet transition= stateMachine.perform(action:.increase)else{        // no transition occuredreturn}print("transitioned from\(transition.from) to\(transition.to) as result of energy\(transition.action)")    //prints: transitioned from solid to liquid as result of energy increase    stateMachine.perform(action:.increase)print("current state is\(stateMachine.currentState)")    //prints: current state is gas

Example of state observation

classExample{varstateMachine=StateOfMatter.solid.stateMachine(){            didSet{print("current state is\(stateMachine.currentState)")}}}letexample=Example()    example.stateMachine.perform(action:.increase)    // prints: current state is liquid    example.stateMachine.perform(action:.increase)    // prints: current state is gas

About

A declaritive swift state machine.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp