[swift-users] Guarding against an empty sequence

Jacob Bandes-Storch jtbandes at gmail.com
Sun May 8 21:30:33 CDT 2016


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 at 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 at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160508/9fc89d3c/attachment.html>


More information about the swift-users mailing list