覆盖用户定义的类中的布尔值评估

有时,在你自己的程序中为某种对象设置特定的 asBoolean 定义可能很有用。

/** an oversimplified robot controller */
class RunController {
    
    def complexCondition
    int position = 0
    
    def asBoolean() {
        return complexCondition(this);
    }
    def advanceTo(step) {
        position += step
    }
}
def runController = new RunController(complexCondition : { c -> c.position < 10 } )

assert runController
runController.advanceTo(5)
assert runController
runController.advanceTo(5)
// The limit has been reached : the controller evaluates to false
assert !runController

此代码显示了一个过度简化的机器人控制器,它检查机器人的位置是否超过 10(带有用于状态评估的闭合)