/---------------------------------------------------------------------------- orMap: boolean orMap(Traversal tr, ISelect choice){ return orMapAcc(tr, false, ISelect choice); } Method Header: boolean orMapAcc(Traversal tr, boolean acc, ISelect choice) BASE-VALUE: false UPDATE: boolean update(T t, boolean acc, ISelect choice){ return (choice.select(t)) || acc; } ---------------------------------------------------------------------------*/
/** RECURSIVE VERSION * Determine if any data item generated by the given traversal * satisfies the given ISelect predicate. */ public <T> boolean orMap(Traversal<T> tr, ISelect<T> choice){ return orMapAcc(tr, false, choice); } /** RECURSIVE VERSION --- accumulator based helper. * Determine if any data item generated by the given traversal * satisfies the given ISelect predicate. */ public <T> boolean orMapAcc(Traversal<T> tr, boolean acc, ISelect<T> choice){ if (tr.isEmpty()) return acc; else return orMapAcc(tr.getRest(), updateOrMap(tr.getFirst(), acc, choice), choice); } /** A helper to produce the updated value of the accumulator * @param <T> the type of data in this data set * @param t the instance of the data to be used in the update * @param acc the current value of the accumulator * @param choice the given ISelect predicate. * @return the updated value of the accumulator. */ protected <T> boolean updateOrMap(T t, boolean acc, ISelect<T> choice){ return (choice.select(t)) || acc; }