这似乎有点烧脑?没关系,下面还有更烧脑的。operation实际上是个很复杂的东西,将其了解透后你的逻辑运算能力应该能变强几分。
我们知道,目标选择器可以选择多个目标。而你有没有注意到,刚才我们所了解的不过都是输入a和输入b均都为1个的情况。那么如果输入a有多个,或是输入b有多个,甚至是输入a和输入b都有多个的时候,operation又会怎样运算?
由于接下来的内容Minecraft Wiki并未记载(注:英文Minecraft Wiki有两行记载,但讲得过于简略),网上也搜不到相关内容,下面内容都是作者在Java1.12.2版本中实验得出的。如果你对此很感兴趣,你也可以自己尝试去做做实验,看看在其他版本下或其他情况下结果是否一样。
①当输入a有多个分数,而输入b仅有一个分数时
现在我们假设输入a有三个:
a?=1
a?=0
a?=-1
输入b有一个:
b=3
我们对这三个输入a和输入b进行+=(求和)操作,最终得出来结果是:
a?=c?=a?+b=1+3=4
a?=c?=a?+b=0+3=3
a?=c?=a?+b=-1+3=2
因此不难发现,当有多个输入a但只有一个输入b时,游戏将会把每个输入a均与输入b进行一次运算操作。
(注:这不是真正的实验过程,这已经被大大简化了)
②当输入a有一个分数,而输入b有多个分数时
我们假设输入a=1,输入b有三个:
b?=2
b?=3
b?=-4
我们对这个输入a和三个输入b进行+=操作,最终得出结果是:
a=c=a+b?+b?+b?=1+2+3+(-4)=2
不难发现,当输入a只有一个但输入b有多个时,输入a将与每个输入b都进行一次运算操作,再把最终得出的结果覆盖到原本的输入a上。
③当输入a和输入b均为多个分数时(该情况Minecraft Wiki并未记载):
我们假设输入a有两个:
a?=1
a?=0
输入b也有两个:
b?=3
b?=-2
我们也对它们进行+=操作,最终得出的结果竟然是:
a?=c?=a?+b?=1+3=4
a?=c?=a?+b?=0+3=3
没错!输入a和输入b多个的情况下,游戏只会选择一个输入b来参与运算。也就是说,在其他条件相同的情况下,该结果跟输入a多个但输入b只有一个的结果一模一样。
这应该算是个Bug吧......
对了,既然游戏只会选择一个输入b来参与运算,那么这个输入b会选择谁呢?
根据作者的测试,游戏会选择目标选择器排列的第一个输入b,这时候就要看你用的目标选择器。如果用的是@p、@e、@a,就是就近原则;如果是@r,则是随机。
这个排列顺序在operation中不只是用于选择输入b,它还用于在情况①下决定输入a们与输入b运算的先后顺序和情况②中决定输入a和哪些输入b先运算,哪些输入b后运算。
了解这些后,我们就可以来看一种升级版的情况①:
当输入a有多个,输入b有一个且这个输入b也是一个输入a时
这个情况是啥意思呢?简单来说,现在有张三李四王五,我们拿他们三的分数作为三个输入a,并把张三的分数也作为输入b。是不是复杂了起来?
我们假设有三个输入a,分别是:
a?=-2
a?=1
a?=3
(按照下标数字从小到大参与运算)
而输入b就是a?。
我们对它们两按照该情况进行+=运算,最终得出来以下结果:
a????=c?=a????+a????=-2+1=-1
a????=c?=a????+a????=1+1=2
a????=c?=a????+a????=3+2=5
上面两个式子中,为了让大家方便理解,我特别标上了old(旧)和new(新)来代表未运算和已运算的两个不同的量。
不难发现,当输入a有多个,并且输入b是众多输入a中的一个时,如果某个输入a与输入b运算时这个输入b所关系的输入a还没有运算,那么这个输入a将会与旧的输入b进行运算;如果某个输入a与输入b运算时这个输入b所关系的输入a已运算完成,那么这个输入a将会与新的输入b进行运算。
这读起来有点绕口啊。没关系,虽然现在你不一定看得懂,但只要你在游戏中实地做过实验你估计就懂了。
本章就到这里......了?
刚才的四个探究中,我们都在探究operation在有多个输入和多个输出情况下会如何计算。一般来说,进行这种研究会用到命令方块。你知道的,命令方块运行指令成功后会输出结果,这个结果可能会影响到命令方块输出的红石信号强度。比如我们之前讲到的testfor指令,探测到有多少个实体就输出多强红石信号。
那么operation在命令方块中执行成功是否会影响到命令方块输出的红石信号强度呢?
答案是:能!
经过作者的测试,operation运行一次输出的红石信号强度,等于该次operation计算的次数。比如情况①中,如果指令是在命令方块中运行,那么运行成功后命令方块将输出3级红石信号,因为operation运算了3次。情况②输出的信号也一样,别看作者给出的只是一行式子,但是operation仍然确确实实运算了3次。
这是一个冷门到极致的知识,冷门到连Minecraft Wiki也没有记载。当然我也不确定在新版本是否还有这个功能,也许已经被移除了呢?
喜欢Minecraft指令手册请大家收藏:(m.2yq.org)Minecraft指令手册爱言情更新速度全网最快。