I very much agree with your concerns about this change in general.

On this specific example, though, I just wanted to point out that there doesn’t 
seem to be a good reason to use .forEach here.

for (key, value) in self {
  // etc
}

Would work perfectly well and is clearer IMO, still works with destructing, 
doesn’t have gotcha problems related to continue/break not doing what you might 
expect, etc. 

forEach is only really a win when used on the end of a chain of map/filter-like 
operations, where for…in would involve bouncing back from right to left.

> On May 24, 2017, at 12:12 PM, Tony Parker via swift-evolution 
> <[email protected]> wrote:
> 
> Hi everyone,
> 
> We received a pull request in swift-corelibs-foundation which is apparently 
> in response to a language change for SE-0110.
> 
> It turns this perfectly reasonable code:
> 
> -        self.forEach { (keyItem, valueItem) in
> 
> into this:
> 
> 
> +        self.forEach { (arg) in
> +            let (keyItem, valueItem) = arg
> 
> Is that really the design pattern we want to encourage? What was wrong with 
> the previous code?
> 
> (https://github.com/apple/swift-corelibs-foundation/pull/995/files 
> <https://github.com/apple/swift-corelibs-foundation/pull/995/files>)
> 
> - Tony
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to