6.7 bottom

表达式中有几种无法补救的错误.
例如,可能试图去除以0,计算负数的平方根,或者试图重定向触发器到不存在的地址.
在这些情况下,bottom被用于优雅的完成表达式计算的一种方式.
如果bottom出现在表达式的任何地方(注意下面两个异常: 见Special Forms),则整个表达式的会变成bottom.
例如,思考这个表达式:

bottom在条件型触发器中被认为是0.
因此,一个产生错误的表达式将不会引起触发器崩溃.所以,例如,在

中,ChangeState控制器将永远不会被执行如果没有helper存在,因为表达式"helper, statetype = A"将计算出bottom,被认为是0.
(注:此种情况在debug时会出warning,解决方式就是在这条触发条件上方加上:

由于控制器检测的时候遵循从上到下的顺序,所以会先检测trigger1 = numhelper,如果numhelper非0,表示有helper,则将继续检测trigger1 = helper, statetype = A
因为有了helper存在,才不会使控制器重定向到不存在的地址.如果numhelper不存在,则根据检测顺序原理,就不会再检测trigger1 = helper, statetype = A,也就不会出warning. )

通常当产生bottom时,MUGEN的调试控制台会输出warning.
这是因为bottom的存在指示一个可能的逻辑上的错误或者是歧义.
例如,在上面的ChangeState的例子中,如果不存在helper,则声明"helper, statetype = A"是空的,且无法判断该认为是真还是假.