“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
