在一个由条件式或循环所构成的上下文中,一个 flip-flop 由两个通过..操作符相连的布尔表达式构成。除非其左侧表达式为 true,否则一个 flip-flop 表达式就是 false,而且在左侧表达式为 true 之前,它的值都会是 false。一旦该表达式为 true,那么它就会“flips”到一个持久的 true 状态。它会保持该状态,而且对其后续的求值也返回 true,直到其右侧表达式成为 true 为止。如果其右侧表达式为 true 了,那么该 flip-flop 就会“flops”回一个持久的 false 状态,对其后续的求值也返回 false,直到其左侧表达式再次成为 true 为止。
ex1:
11, false..false, pass
12, true..true, collect
13, false..false, pass
14, false..false, pass
15, false..false, pass
16, true..false, collect
17, true..false, collect
18, true..true, collect
19, false..false, pass
20, true..false, collect
..和...的区别是,..是当左侧为 true 时,同时根据右侧来决定 flip-flop 的状态是否为 false,...是下次再根据右侧值决定 flip-flop 的状态
ex2:
11, false...false, pass
12, true...true, collect (虽然右边是true,但是这次被忽略)
13, false...false, collect (这里虽然左右都是false,但是整个flip-flop是true)
14, false...false, collect
15, false...true, collect (右侧是true了,整个flip-flop是false了)
16, true...false, collect (左侧又是true了)
17, false...false, collect
18, false...true, collect (右侧是true了,整个flip-flop是false了)
19, false...false, pass
20, true...false, collect
关键是知道整个 flip-flop 表达式有内部状态,还有何时根据左右表达式改变内部状态
貌似是这么解释的,实际上从来没用过这玩意儿。