我是通知7的新手,我想撤消之前只想应用的命令。我该怎么做?(我希望在事件发生后使用after语句来实现这一点。(
假设我们有一个关于的小故事,而不是-规则。
林恩的《激光》实验室是一个房间"拱顶在东边。如果没有就好了。"致命的激光将你与之隔开。">金库在实验室的东面。"你成功了!">
不要从实验室往东走:say"一个炽热的激光束格挡住了你的去路。">
一旦某个动作发生,我们想"禁用"这个规则。正如您所建议的,这可能发生在after-规则内部,也可能发生在任何其他类型的规则中。
我们可以添加这样的内容:
激光安全是一种变化的真实状态。表盘是实验室里的一个设备。它固定在适当的位置并打开。关闭表盘:现在激光安全是真的。关闭表盘后:说"激光冷却并无害。">
现在,我们没有在运行时真正撤销我们的规则定义,而是缩小了其定义的条件,这样它就被"解除"了,一旦lasers safe
变为真,就再也不应用了。
因此,我们将替代规则重新编程为:
当激光安全为假时,不要从实验室向东:说"一个炽热的激光束格挡住了你的路。">
这个蟑螂的一个好处是,我们现在甚至可以"重做"我们的"撤消":一个简单的now lasers safe is false
返回,而不是规则的旧行为。
此解决方案是通用的:您可以始终定义一个全局真值,以禁用,而不是像这样的规则。
当然,简单地写一些东西更容易,比如:
-
Instead of [action] when the [noun] is (not) [adjective]:
-
Instead of [action] when we have (not) [verb]ed the [noun]:
在我们的情况下,我们可以自由编写:
当拨盘打开时,不要从实验室向东:说"炽热的激光束格挡住了你的去路。">
或类似的东西:
当我们没有按下红色按钮时,不要从实验室向东:说"…">
参见§9.12。作为条件的行动。