咒法学学习手记(三):策略——重复与分支
托特之策略讲解
托特之策略看似复杂,其实非常简单:托特之策略接受两个列表,第一个列表是图案列表,第二个列表可以称为目标列表。
托特之策略便是对第二个列表中的每一个元素依次执行第一个列表中的操作,只不过有一点特殊而已。出于简单理解起见,可以这么解释:
托特之策略相当于在多个与当前栈一模一样的栈中,先各自压入一个第一个列表当中的元素,之后在所有新栈各自执行所给图案列表所规定的操作,最后收束结果,将这一系列栈的所有元素全部压入一个列表中返回原栈。
比方说,现在有一个栈,栈内有一个 iota:210983.json,然后向其中压入加法之馏化(iota:5f5abf.json),再压入 iota:8cac19.json,然后使用托特之策略。
那么对每一个 Iota,创建和初始栈一模一样的新栈,将它们压入得到 iota:74fc83.json、iota:a5f05d.json、iota:d37a8c.json,在其中各自执行 iota:5f5abf.json,分别得到结果,那么总的结果全部打包起来便是 iota:aa94c6.json。
托特之策略主要用于实现多次重复操作。比如大范围的方块破坏、对一定范围内的实体造成负面效果等。
比如这个法术 iota:1fcc1e.json:先用区域之馏化来获取一定范围内的所有实体,用弄臣之策略摆正位置,然后用托特之策略对它们各自进行一次向上驱动。
逻辑分支
在不同的情况下需要不同的咒术,这是很显而易见的事实。但是如果每次都依靠咒法师自己来切换不同的法术,未免有失格调,也不算方便。
因此可以使用一些方法来实现“如果……那么……“的逻辑。最常见的方法是用占卜师之提整:根据第一个提供的布尔值来决定是移除第三个还是第二个元素,再搭配赫尔墨斯之策略,就实现了”如果……那么……“的分支语句。
比如说这个示例 iota:5592af.json:
先用弓箭手之馏化获取目标坐标,然后双子之分解复制一份,用相等之馏化检查是否为 Null:
- 如果是,则用初学者之策略清除栈;
- 如果不是,就破坏方块。
除了这个方法之外,还有利用选择之馏化根据索引来选择一个列表中的不同元素来实现多向分支的方法。