Groovy equivalent to OCL forAll
groovy, ocl
Solution
You can use every
items.every { it.matchesCriteria() }
Problem
What is the Groovy equivalent to the forAll method in OCL? Let's say that I have a list of items. ``` def items = new LinkedList<Item>(); ``` What is the Groovy way to express a predicate that holds if and only if all items match a certain criteria? The following code snippet does not work, because the inner return only jumps out of the current iteration of the each closure, not out of the forAll method. ``` boolean forAll(def items) { items.each { item -> if (!item.matchesCriteria()) return false; }; return true; } ``` The following code snippet, which should do the trick, feels cumbersome and not Groovy-like. ``` boolean forAll(def items) { boolean acceptable = true; items.each { item -> if (!item.matchesCriteria()) acceptable = false; }; return acceptable; } ``` I am looking for a way to lazily evaluate the predicate, so that the evaluation would finish when a first non-matching item is found.