1

我是通知 7 的新手,我想撤消一个我只想早先应用的命令。我该怎么做?(我希望这发生在事件之后,使用 after 语句。)

4

1 回答 1

2

假设我们有一个带有相反规则的小故事。

林恩的“激光”

实验室是一个房间。“东边是金库。如果没有的话
    致命的激光将你与它分开。”

避难所在实验室的东边。“你做到了!”
而不是从实验室向东走:
    说“一排炽热的激光束挡住了你的去路。”

一旦发生特定操作,我们希望“禁用”此规则。正如您所建议的,这可以在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。动作作为条件

于 2019-11-14T03:56:14.700 回答