Предположим, у нас есть небольшая история с вместо -rule.
<b>"Lasers" by Lynn</b>
The Lab is a room. <i>"To the east lies the vault. If only there weren't
deadly lasers separating you from it."</i>
The Vault is east from the Lab. <i>"You made it!"</i>
Instead of going east from the Lab:
say <i>"A lattice of red-hot laser beams blocks your path."</i>
Мы бы хотели "отключить" эту вместо -править, когда происходит определенное действие. Это может произойти изнутри после правила, как вы предлагаете, но также и в любом другом виде правил.
Мы могли бы добавить что-то вроде этого:
Lasers safe is a truth state that varies.
The dial is a device in the Lab. It is fixed in place and switched on.
Carry out switching off the dial: now lasers safe is true.
After switching off the dial: say <i>"The lasers cool down and turn harmless."</i>
И теперь, вместо того, чтобы фактически отменить наше определение вместо правила во время выполнения, мы сужаем условие его определения так, чтобы оно "обезвреживалось", чтобы никогда не применяться снова, когда lasers safe
становитсяtrue.
Итак, мы перепрограммируем правило вместо этого:
Instead of going east from the Lab <b><i>when lasers safe is false</i></b>:
say <i>"A lattice of red-hot laser beams blocks your path."</i>
Когда-то приятно в этом pparoach то, что теперь мы можем даже «повторить» наше «отменить»: простое now lasers safe is false
возвращает вместо правила старого правила.
Это решение является общим: вы всегда можете определить глобальное значение-истину, которое отключает вместо -Правило вот так.
Конечно, даже проще написать что-то вроде:
В нашем случае мы можем написать:
Instead of going east from the Lab <b><i>when the dial is switched on</i></b>:
say <i>"A lattice of red-hot laser beams blocks your path."</i>
или что-то вроде:
Instead of going east from the Lab <b><i>when we have not pushed the red button</i></b>:
say <i>"..."</i>
See §9.12. Действия как условия .