> On May 2, 2016, at 6:41 AM, Krzysztof Siejkowski via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> Correct, it is not ternary, just a slip of my mind :)
> 
> I have a great amount of understanding for that, I find `nil coalescing 
> operator` name simply impossible to remember :)
> 
> 
> 
>> I didn’t know this workaround worked. Cool! Can somebody from the core team 
>> tell us if it not supporting throw directly is a bug or an intended feature?
> 
> Just to elaborate a little after I thought about it for a minute: intended 
> feature. The core reason is that `throw` is a statement (the same way as `if` 
> or `guard` are), and in Swift statements are not expressions.
> 
Yep, Krzysztof is exactly right here.  It would be possible to turn “throw” 
into an expression - this is precedented in other languages (like C++ iirc).

-Chris



> `try`, on the other hand, is an expression.
> 
> So you cannot simply `throw` the same way you cannot write:
> 
> let elem : AnyObject = “42"
> let int = elem as? Int ?? if true { return 42 }
> but you can write:
> 
> let elem : AnyObject = “42”
> 
> let int = elem as? Int ?? { if true { return 42 } }()
> 
> There has been already a few discussions whether statements should be 
> expressions in swift or not on the list, which I’ve been only partially 
> following, so I’m not sure if there’re any plans for changing the current 
> statement/expression tradeoff is Swift :)
> 
> Cheers!
> 
> Krzysztof
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to