“map” already "maps the values” so I think something like “transform” might be 
a little clearer, if we don’t want to just overload “map”. Regardless of what 
it’s called, though, I’m +1 on the functionality.

- Dave Sweeris

> On Apr 13, 2016, at 1:41 AM, Jonathan Hull via swift-evolution 
> <[email protected]> wrote:
> 
> I would really like to see something like the following added to the standard 
> library:
> 
> extension Dictionary {
>     
>     func mapValues<U>(transform:(Key,Value)->U)->[Key:U] {
>         var output:[Key:U] = [:]
>         for (k,v) in self {
>             output[k] = transform(k,v)
>         }
>         return output
>     }
>     
> }
> 
> It comes up enough that I have had to add it to pretty much every one of my 
> projects.  I also don’t feel comfortable adding it to my frameworks, since I 
> figure a lot of people are also adding something like this to their projects, 
> and I don’t want to cause a conflict with their version.  Prime candidate for 
> the standard library.
> 
> I like calling it ‘mapValues' as opposed to providing an override for map, 
> since it makes the specific behavior more clear.  I would expect ‘map' to 
> possibly map the keys as well (though there are issues where the new keys 
> overlap).  I suppose you could just have a bunch of overrides for map if the 
> compiler becomes good enough at differentiating return types: 
> (Value)->(Value), (Key,Value)->Value, (Key, Value)->(Key,Value)
> 
> Thanks,
> Jon
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to