Having postfix conditionals for return would be a lot easier to implement than 
having them everywhere, because you just need to watch for an if or unless 
after the return. Of course they might come in handy elsewhere, and may even 
solve the ever-present problem of the unintuitive ternary operator ?:, but 
that’s a whole different discussion. This proposal is simply about having some 
syntactic sugar for return statements.

Seeing as this change would be purely additive and adding more keywords to 
Swift is not really a problem (we can use them as parameter labels etc.), I 
don’t really see a reason against it.

Using “unless” for this makes sense especially as a postfix. I agree with 
keeping guard around, but this statement is different from guard in that the 
code executed if the condition can’t be satisfied is stated before the keyword, 
which makes it read well.

In case of the guard statement, you’d need another keyword to make “unless” 
logical, like unless foo != nil inWhichCase {}, which just feels bulky to me.

Additionally, return nil guard let thing = things[index] does not read 
logically to me.

–Julian

> On 04 Aug 2016, at 17:03, David Rönnqvist via swift-evolution 
> <[email protected]> wrote:
> 
> One complication with allowing postfix conditionals for all statements is 
> that it often needs to have an else clause as well (like the ternary operator 
> “?:").
> 
> For example, what’s the type of “x” below?
> 
> let x = 5 if someCriteria()
> 
> And is “y” initialized or not?
> 
> let y: Int
> y = 42 if someCriteria()
> doSomething(with: y)
> 
> I realize that this idea is more about the feature/behavior than the naming, 
> but renaming “guard” to “unless” is one of the commonly rejected proposals.
> https://github.com/apple/swift-evolution/blob/master/commonly_proposed.md 
> <https://github.com/apple/swift-evolution/blob/master/commonly_proposed.md>
> 
> - David
> 
> 
>> On 04 Aug 2016, at 16:52, Kurt Werle via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>> Why would you do this just for return statements?  Why not do postfix 
>> conditionals for all statements (like ruby)?
>> 
>> I've always liked postfix conditionals, but not enough to suggest them.  
>> Mostly I'm curious about limiting the scope to return statements.
>> 
>> On Thu, Aug 4, 2016 at 7:31 AM, Christian Kienle via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> +1
>> 
>> 2016-08-04 15:38 GMT+02:00 Julian Dunskus via swift-evolution 
>> <[email protected] <mailto:[email protected]>>:
>> How often have you written something like the following?
>> 
>> `
>> if indexPath.row == 0 { return }
>> 
>> guard let thing = things[index] else { return nil }
>> `
>> 
>> I propose adding some syntactic sugar to make such statements more readable 
>> and simple to write:
>> 
>> `
>> return if indexPath.row == 0
>> 
>> return nil unless let thing = things[index]
>> `
>> 
>> I don’t know how easy or hard this would be to implement, but I think it 
>> would improve some code significantly.
>> 
>> –Julian Dunskus
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> 
>> 
>> 
>> -- 
>> Mit freundlichen Grüßen
>> 
>> Christian Kienle
>> Mobile Developer
>> 
>> REWE Digital GmbH
>> Domstraße 20, 50668 Köln, Büro: Schanzenstr. 6-20, 51063 Köln
>> Geschäftsführer: Dr. Jean-Jacques Michel van Oosten (Vorsitzender), 
>> Christoph Eltze, Dr. Johannes Steegmann, Dr. Robert Zores
>> Handelsregister: Amtsgericht Köln (HRB 78670) UST-ID-Nr.: DE 290 605 450
>> 
>> Telefon: +49 151 11441782
>> E-Mail: [email protected] 
>> <mailto:[email protected]>
>> Internet: www.rewe-digital.com <http://www.rewe-digital.com/>
>> 
>> Ein Unternehmen der REWE GROUP
>> http://www.rewe-group.com <http://www.rewe-group.com/>
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> 
>> 
>> 
>> -- 
>> [email protected] <mailto:[email protected]>
>> http://www.CircleW.org/kurt/ <http://www.circlew.org/kurt/>
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> _______________________________________________
> 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