> On 2 Jul 2016, at 14:19, Anton Zhilin via swift-evolution 
> <[email protected]> wrote:
> 
> Diego Barros via swift-evolution <swift-evolution@...> writes:
> 
>> for 1...10 {
>> // do something 10 times
>> }
> 
> Firstly, this should be delayed to post-Swift 3.
> Secondly, I tend to vote for generalization and simplification of Swift 
> syntax. For example, I voted to replace 'default' with 'case _'. In this 
> case, I also prefer more general syntax. -1 from me.

Does this idea apply in the same way? While "for _ in foo" and "for foo" would 
be equivalent, usually the underscore is used to indicate intent to avoid 
mistakes, which is why we wouldn't to be able to just use "case" on its own to 
represent match all, as it could be a case statement that the user didn't 
finish, the underscore in this case makes it clear that yes, what the user 
wants to do is ignore the element(s) themselves.

However, unlike the switch case, for omitting the underscore to represent a 
mistake you'd have to:
Forget the underscore
Forget the "in" keyword
Use a variable that should have been shadowed but wasn't, resulting in a subtle 
error.
I specify number 3 because if you use a variable that doesn't exist it will 
produce an obvious error. While the three are possible, they seem highly 
unlikely in combination.


That said, there is an argument to be made that this change would be 
inconsistent with using a result:

        foo.someMethod()                // warning, unused result
        let _ = foo.someMethod()        // result explicitly ignored

I'd possibly argue that a sequence is implicitly meant to have its results 
used, so they should be explicitly ignored for consistency's sake.


So… I like the short-form, but I like consistency, so I think I've manoeuvred 
myself into being a +0.1 or so ;)
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to