如果我提到“状态机”这个词,大多数人都会选择状态机设计。所以我想简化案例以关注这一点。
这里建议的是一个文本流,它很长或经常被带到当前阶段。
每次处理序列中的单个字符并决定下一个状态。这里有两个解决方案:
textflow = iter(text)
endFlag = False
while True:
process()
if endFlag:break那么过程方法就是这样
def process0():
for x in textflow:
do something
if condition1:
process = process1
break
elif cond2:
process = process2
break
def process1():
for x in textflow:
do something
if cond0:
process = process0
break
elif cond2:
process = process2
break
...要么
for x in text:
process(x)那么过程方法就是这样
def process0(x):
do something
if cond1:
process = process1
elif cond2:
process = process2
def process1(x):
do something
if cond0:
process = process0
elif cond2:
process = process2
....在第一种解决方案中,每个流程方法都会以自己的方式进行迭代,并结束流程直到状态发生变化。在第二步中,主循环执行迭代,并且每个时间进程都会被调用(map()可以使用,但由于每次都会更改进程,所以它不起作用)。
状态变化将如下所示:
0 1 2 1 0 2 1 0 1 2 0 1 2 0 ....或者像这样:
0 0 0 0 0 ...many 0 .. 0 1 ...many 1 ... 1 2......2 1 ..... 1更常见的情况是:
0 1 1 1 1 1 0 0 2 1 1 1 1 2 0 2 3 1 1 1 1 3 1 1 1 2 0 ....我需要一位顾问告诉我哪种解决方案更高效。