I'd argue that this behavior is correct. By extension of De Morgan's laws <https://en.wikipedia.org/wiki/De_Morgan%27s_laws>, "seq.all { pred($0) }" should be equivalent to "!seq.contains { !pred($0) }".
Jacob On Sun, May 8, 2016 at 7:16 PM, Adriano Ferreira via swift-users < swift-users@swift.org> wrote: > Hi everyone! > > I’m working on the following method: > > extension SequenceType { > > /// Check if `predicate` is true for all elements of `self` > /// > /// - Parameter predicate: The predicate called on each element of > `self` > /// > /// - Returns: True iff every element in `self` satisfies > `predicate`, false otherwise > > @warn_unused_result > func all(@noescape where predicate: Generator.Element throws -> Bool) > rethrows -> Bool { > for element in self where try !predicate(element) { > return false > } > > return true > } > } > > However, when the sequence is empty the method returns true, which is not > the desired behaviour. > > let a = [Int]() > let b = a.all(where: { $0 > 7 }) > XCTAssertFalse(b) // This fails, cause there’s no guard against an > empty sequence > > Does anyone know how to guard against an empty sequence? > > I’m using Xcode 7.3.1 and Swift 2.2. > > Best, > > — A > > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users > >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users