Objective C 中的一个简单状态机。
特性
// TODO
// Dispense a can for 3 mBTC. Don't give any change, but carry credit over to the next person.
FSEvent *insert1 = [FSEvent eventWithName:@"insert 1"];
FSEvent *insert2 = [FSEvent eventWithName:@"insert 2"];
FSMachine *machine = [FSMachine machineWithBuilder:^(FSMachineBuilder *machine) {
FSState *zero = [machine addState:@"zero"];
FSState *one = [machine addState:@"one"];
FSState *two = [machine addState:@"two"];
FSActionBlock dispenseCan = ^{
NSLog(@"Kerchunk!");
};
[zero transitionTo:one onEvent:insert1];
[zero transitionTo:two onEvent:insert2];
[one transitionTo:two onEvent:insert1];
[one transitionTo:zero onEvent:insert2 withAction:dispenseCan];
[two transitionTo:zero onEvent:insert1 withAction:dispenseCan];
[two transitionTo:one onEvent:insert2 withAction:dispenseCan];
}];
[machine post:insert1]; // [zero] -> [one]
[machine post:insert1]; // [one] -> [two]
[machine post:insert2]; // [two] -> [one], "Kerchunk!"
// (next person comes along…)
[machine post:insert2]; // [one] -> [zero], "Kerchunk!"
…是受到鼓励的。鼓励报告错误和请求合并。
Apache 2.0。有关更多信息,请参阅 LICENSE 文件。