> On May 2, 2016, at 6:41 AM, Krzysztof Siejkowski via swift-evolution
> <[email protected]> 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
> [email protected] <mailto:[email protected]>
> https://lists.swift.org/mailman/listinfo/swift-evolution
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution