[swift-evolution] ternary operator ?: suggestion

Paul Ossenbruggen possen at gmail.com
Sat Dec 12 01:15:42 CST 2015


So adding “then”: 

let v = if condition then “A” else “B” 

fixes that ambiguity and “then” would help differentiate an expression from a statement. I think there is value to having them separate constructs (for details see earlier comments in this thread). Also it is nice not having the braces in the expression. 

Perhaps, similarly, “then" indicates an expression as opposed to a statement:

let v = switch condition then case Red: 1, case Blue: 2, case Green: 3

One downside is it, It may add confusion as to when to add the “then” clause as people will have to know what an expression vs statement is, but I suppose that is true with a ternary operator as well, and this reads better than a ternary operator. This also provides a good way to do single line switch expressions. 

for multiline:

let v = if condition 
	then “A” 
	else “B"

let v = switch condition then 
	case .Red: 1,
	case .Blue: 2,
	case .Green: 3

or with multiple expressions:

let v = switch condition then 
	case .Red: 1,
	case .Blue: (if shade == .Dark then 4 else 2),
	case .Green: 3


> 
> On Dec 11, 2015, at 8:57 PM, Chris Lattner via swift-evolution <swift-evolution at swift.org> wrote:
> 
>> On Dec 11, 2015, at 5:36 PM, Andrey Tarantsov via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>>> How about:
>>> 
>>> let v = if condition then “A" else “B"
>> 
>> I don't think introducing a separate "then" keyword is a good idea, two subtly different kinds of IFs would be confusing.
>> 
>> I guess you meant:
>> 
>> let v = if condition { "A" } else { "B” }
> 
> I don’t really want to wade into this discussion, but if A and B are intended to be *expressions* instead of an arbitrary sequence of statements|decls|exprs, then a more consistent syntax would be:
> 
> 	let v = if condition (A) else (b) 
> 
> The immediate problem with that is that juxtaposition of two expressions (condition, and A [with or without parens]) will lead to immediate syntactic ambiguity.
> 
> -Chris
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151211/67424326/attachment.html>


More information about the swift-evolution mailing list