[swift-evolution] ternary operator ?: suggestion

Craig Cruden ccruden at novafore.com
Fri Jan 8 02:53:09 CST 2016


There is no reason why it could not be called that…. but…. it would be much more restrictive (then of course you would have switchFilter, switchReduce, switchFold etc.

The idea is that instead of having just a map which takes only a single function, in now takes a set of functions that are applicable based on pattern matching conditions (the entire set covers all cases).  

In the case of reduce, I could take a list of types which apply different calculations depending on type which sum together to produce a single value.  

Of you could just have a single case that covers all cases but allows you to decompose a type/value into something more friendly to work with.

i.e. key/value ….  n.map { case (k, v) in …. }


> On 2016-01-08, at 15:35:30, Jo Albright <me at jo2.co> wrote:
> 
>> On Jan 8, 2016, at 2:36 AM, Craig Cruden via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>>>> let commission = trade.map {
>>>> 	case .Buy(let quantity, let price) where Double(quantity) * price > 10000 in
>>>>     		Double(quantity) * price * vipCommissionRate / 100
>>>> 	case .Buy(let quantity, let price) in
>>>>     		Double(quantity) * price * commissionRate / 100
>>>> 	case .Sell(let quantity, let price) where Double(quantity) * price > 10000 in
>>>>     		Double(quantity) * price * vipCommissionRate / 100
>>>> 	case .Sell(let quantity, let price) in
>>>>     		Double(quantity) * price * commissionRate / 100
>>>> }
> 
> Is there any reason it couldn’t be “switchMap” instead of “map”? Would follow the design of “flatMap” naming. It would also help explain what is happening by mapping based on a switch statement.
> 
> let commission = trade.switchMap {
> 
>     case .Buy(let quantity, let price) where Double(quantity) * price > 10000 in
>     		Double(quantity) * price * vipCommissionRate / 100
>     case .Buy(let quantity, let price) in
>     		Double(quantity) * price * commissionRate / 100
>     case .Sell(let quantity, let price) where Double(quantity) * price > 10000 in
>     		Double(quantity) * price * vipCommissionRate / 100
>     case .Sell(let quantity, let price) in
>     		Double(quantity) * price * commissionRate / 100
> 
> }
> 
> 
>  Nerd . Designer . Developer
> Jo Albright
> 
> 

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


More information about the swift-evolution mailing list