覆盖用户定义的类中的布尔值评估
有时,在你自己的程序中为某种对象设置特定的 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(带有用于状态评估的闭合)