Is there a way to break from an array's reduce function in Swift? -


is there way similar break for loop in array's reduce() function?

e.g. consider have array:

var flags = [false, false, true, false, false, true, false] 

... , need cumulative || on them. for loop, following possible:

var resultbyfor = false  flag in flags {     if flag {         resultbyfor = true         break     } } 

... i.e. @ moment our first true there no need finish loop result true anyway.

with reduce(), following looks quite neat , tidy:

var resultbyreduce = flags.reduce(false) { $0 || $1 } 

however, array given in example, for loop body executed 3 times, while reduce() function closure triggered full 7 times.

is there way make reduce() bail out on 3rd iteration (just can done in for loop)?

[upd]

i oversimplified question. original problem more this:

extension int {     func iswholemultiplesof(base: int) -> bool {         return (self % base) == 0     } }  var numbers = [3, 5, 6, 7, 2, 3, 8]  var resultbyfor = false  // loop body triggered 3 times number in numbers {     if number.iswholemultiplesof(2) {         resultbyfor = true         break     } }  // closure of reduce() triggered 7 times var resultbyreduce = numbers.reduce(false) {     $0 || $1.iswholemultiplesof(2) } 

... i.e. have array of objects , want know if there @ least 1 of them has method evaluating true.

as eric , fogmeister suggested, following trick:

// closure of contains() triggered 3 times var resultbycontains = contains(numbers) {     $0.iswholemultiplesof(2) } 

as others have suggested, can use contains purpose:

var flags = [false, false, true, false, false, true, false] contains(flags,true) //--> true 

another option use find search first instance of you're looking for, in case true:

var flags = [false, false, true, false, false, true, false]     find(flags,true) // --> 2, returns nil if not found let containstrue = (find(flags,true) != nil)