l 当没有频次时,表示在每个插补周期循环执行动作
l WHEN 表示当条件满足时执行一次动作后,不在检查条件;就执行一次,后面即使条件又成立了,也不会执行。如果想要再次生效,必须要程序重新执行一次。
l WHENEVER 表示条件满足时在每个差不周期循环执行动作,只要满足就执行。监控的是一个状态,不是跳变。
l EVERY 表示当条件由 false 变为true时就是上升沿 执行一次动作,每当条件满足,做一次。而且这个条件是一个跳变,不是一个一尘不变的状态。
l FROM表示当条件满足之后持续在每个插补周期循环执行动作直至同步动作取消,
我这里用一个舞台的例子作为比较
第一个是 没有频次词,也没有条件判断,直接DO ,这种状态,的同步动作会一直执行,
那就是说 啥都不说了 都在酒里了,直接上台唱吧,无条件的唱吧,尽情的唱吧,宇宙已经无法阻止你了,一直唱到停机
When 是条件满足以后,DO后面的同步动作只执行一次,也就是说唱一首歌,唱完立马走下舞台,不带走一片云彩,
when 这个词很个性,因为都离开舞台了,所以如果你后面条件又满足了,它也不会执行同步动作了,也不会唱歌了,就是这么个性,如果想让它再唱一首,你得再执行一遍 When 的这个语句,再次先把它激活到实时处理区,再来一遍上面的步骤,程序走到when 这句,同步动作进入实时处理区,然后等待条件满足,然后又是一首歌,还是刚才那首歌,然后又下台,花开花谢。周而复始。
Whenever 这个频次的是,只要条件满足,DO后面的同步动作会一直执行。也就是说,他会不停的复读机。这个whenever 真是一个执着也听话的孩子,但是,这里开始但是了啊,如果条件又不满足了,它就不会执行DO后面的同步动作了,如果条件又满足了,它又开始不停的执行同步动作了,
这说明,whenever 这孩子很听话,条件满足就唱,不满足就不唱,我就这么死皮赖脸的在舞台上,随时等待的你的召唤,
这哥们不像是when,唱完一首歌就下去了,whenever 之所以能够在条件满足后能够依然执行同步动作,就是因为它一直在台上。一直在实时处理区,没下去,所以我说它死皮赖脸,一直赖在台上不走。
EVERY 这个频次更有意思了,EVERY 是一直在台上,只不过,条件满足以后,就执行一次同步动作,如果想再次执行一次,必须要条件从不满足到满足变化一次,同步动作就执行了,
用舞台语言形容的话就是,上台后,假如条件是灯光亮,那么灯光一亮立刻唱一首歌,这个人很nice, 怕你麻烦,只唱一首,说明这人情商很高。如果你想让他再唱一遍,你只需要将灯光先关掉,再打开,这人一看你的意思就是还想听,所以又唱了起来,而且很绅士的至唱一遍。不多不少。
From 这个频次词 代表着一个狠人,为什么狠呢,如果条件满足,他会一直唱,直到天昏地暗,直到世界的尽头,有可能你只有关机了 才能终止这一切,
或者用一个指令来关掉,
视频内容