> Le 23 mars 2016 à 05:52, Brent Royal-Gordon via swift-evolution 
> <[email protected]> a écrit :
> 
>> The solution is simple: allow trailing closures in guard bodies.  This would 
>> allow this silly example to compile correctly:
>> 
>> func f(arr : [Int]?) {
>>  guard let x = arr?.map {$0+1} else {
>>    preconditionFailure()
>>  }
>> 
>>  // ...
>> }
> 
> This sounds perfectly reasonable.
> 
>> Alternatives considered
>> 
>> There are three primary alternatives: do nothing, expand the scope of ‘if' 
>> and ‘while’ conditions as well, and significantly change the syntax of guard.
> 
> A fourth alternative would be to change the syntaxes of `if` and `while` (and 
> probably `for` and `switch`) to also have a keyword in this position.
> 
>       if expr then { code }
>       while expr do { code }
>       for elem in expr do { code }
>       switch expr among { code }
> 
> I'm not going to say I advocate for this option, but it *would* clearly mark 
> the end of the condition so that trailing closures could be brought to all of 
> these statements, so it seemed worth mentioning.

Could such new keywords be optional, only required when the compiler see the 
construct as ambiguous? For simple construct, these new then/do/do/among are in 
a way useless; and it would be bad to impose them on all to support a rare use 
case.

Dany

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

Reply via email to