[swift-evolution] ternary operator ?: suggestion
Craig Cruden
ccruden at novafore.com
Fri Jan 8 03:22:49 CST 2016
Conceivably anywhere you accept a function - you could accept a set of functions based on pattern matching.
> On 2016-01-08, at 15:53:09, Craig Cruden <ccruden at novafore.com> wrote:
>
> 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 <mailto: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/1fee2c65/attachment.html>
More information about the swift-evolution
mailing list