I'm not actually familiar with the term "tri op" but if you're referring to the 
ternary, it's only useful when you two, or three items. 

If you chain a ternary to use more than three options it becomes error-prone 
and almost impossible for a human to read

When I'm at my desktop I'll add a couple better examples of what I'm proposing. 

Sent from my iPhone

> On May 23, 2016, at 6:18 PM, Dany St-Amant <[email protected]> wrote:
> 
> 
> Why reinvent the wheel, when the old trusty (but a bit cryptic according to 
> some) tri-op can do the trick…
> 
>> Le 23 mai 2016 à 04:29, Charles Constant via swift-evolution 
>> <[email protected]> a écrit :
>> 
>> Here's a few examples of what this change would allow. 
>> 
>> I just plucked the first instances of other people's switch statements that 
>> I found on GitHub. 
>> 
>> If there were an easy way to search GitHub for chained ternary expressions, 
>> I would have added some examples of those too, since they could all be 
>> improved with this where clause + ??. 
>> 
>> 
>>      mutating func toggle() {
>>              switch self{
>>              case Off:
>>                      self = On
>>              case On:
>>                      self = Off      
>>              }       
>>      }
>> 
>> 
>> 
>>      mutating func toggle() {
>>              self = .On where (self == .Off) ?? .Off
>>      }
> 
> mutating func toggle() { self = self == .Off ? .On : .Off }
> 
>> 
>>      switch switchNumberThree {
>>              case 10, 11, 12:
>>                      println("It is \(switchNumberThree)")
>>              default:
>>                      ("It is none of them!")
>>      }
>> 
>> 
>>      println(
>>              "It is \(switchNumberThree)" where 10...12 ~= switchNumberThree
>>              ?? "It is none of them!"
>>      )
> 
> print( 10...12 ~= switchNumberThree ? "It is \(switchNumberThree)"
>        : "It's none of them" )
> 
>> 
>>      switch x {
>>      case 1:
>>              j++
>>      case 2:
>>              j++
>>      case 3:
>>              j++
>>      case 4:
>>              j++
>>              fallthrough
>>      case 5:
>>              j++
>>              fallthrough
>>      default:
>>              j++
>>      }
>> 
>> 
>>      j = j+1 where (4...5 ~= x) ?? j+2
> 
> Broken conversion:
> j += 4...5 ~= x ? 1 : 2
> 
> Proper conversion:
> j += 4 ~= x ? 3 : 5 ~= x ? 2 : 1
> 
> Earlier e-mail example:
>>     let foo = 
>>         "positive" where ( bar > 0 )  ?? 
>>         "negative" where ( bar < 0 ) ?? 
>>         "zero"
> 
> let foo = bar > 0 ? "positive" :
>           bar < 0 ? "negative" :
>           "zero"
> 
> Dany
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to