覆蓋使用者定義的類中的布林值評估
有時,在你自己的程式中為某種物件設定特定的 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(帶有用於狀態評估的閉合)