I imagine `#underestimateCount()` is going to be your best bet, though you may 
not always see the results you desire

some notes:

1. most would argue that the results you are describing are correct: it is 
vacuously true that for an empty sequence _every_ element in the sequence will 
satisfy any predicate you give it

2. do you have the option to constrain this to CollectionType instead?

3. one option would be for you to grab the generator and iteratively send it 
`next()` on your own - that way you could check if it returns `nil` the first 
time that you call it (i.e. the sequence is empty) and return whatever you 
desire in that case

— Shane S


On May 8, 2016, at 7:16 PM, Adriano Ferreira via swift-users 
<swift-users@swift.org<mailto: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<mailto: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

Reply via email to