[swift-evolution] [Pitch] Retiring `where` from for-in loops

Xiaodi Wu xiaodi.wu at gmail.com
Mon Jun 13 07:33:16 CDT 2016


This is not a sound argument. If your filtering can be expressed as a where
clause, then you would only have to read one line into the loop to see it
in the form of a guard clause.

Moreover, if what you're arguing is that you shouldn't ever have to *read*
inside the loop to know if a sequence is filtered, how do you propose that
we do that? Remove the continue keyword?

On Mon, Jun 13, 2016 at 6:16 AM Jean-Daniel Dupas via swift-evolution <
swift-evolution at swift.org> wrote:

> -1 for the removal.
>
> When I read code, I find it far more visible that a loop is over a filter
> list when the filter clause is on the same line, than when the filter
> clause is inside the loop.
>
> Having to read the full content of the loop to determine if the list is
> filtered or not is not an improvement IMHO.
>
> Moreover, I find it far cleaner to use the where clause that having to
> remember than I have to use the lazy accessor to avoid a performance hit.
>
> Le 13 juin 2016 à 06:39, Charlie Monroe via swift-evolution <
> swift-evolution at swift.org> a écrit :
>
> And to follow-up to myself once again, I went to my "Cool 3rd Party Swift
> Repos" folder and did the same search. Among the 15 repos in that folder, a
> joint search returned about 650 hits on for-in (again with some false
> positives) and not a single for-in-while use.
>
> -- E
>
>
> Not to undermine this fact, but I believe the fact that `where` can be
> used in a for loop is not widely known. I didn't know about it until about
> a month ago (haven't really read much docs, but most people don't either).
>
> But after I found out about it, I started using it and it IMHO improved
> readability of my code. Not by much, but it's the little things that make
> you smile, right?
>
> Many people here argument that `where` is a Swift speciality and needs to
> be learned by the developer - the alternative is to teach the person what's
> the proper alternative - that using .filter can have performance impact and
> that the *correct* way is to use guard within the for loop. And that's IMHO
> much worse than teaching a person about using `where` within a for loop.
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160613/1b8c83ec/attachment.html>


More information about the swift-evolution mailing list