[swift-evolution] [Proposal] mapValues
Vladimir.S
svabox at gmail.com
Wed Apr 13 04:27:46 CDT 2016
+1 for this. Highly useful method and imo should be implemented for Dictionary.
And what if we need to transform the key?
For ex. we have
var d = ["1" : "abc", "2" : "def"]
we could have such method:
d.mapKeys {k,v -> Int in Int(k)! }
to get:
[2: "abc", 1: "def"]
I.e. I suggest to implement and mapKeys() also. It could be also useful in
some situations.
On 13.04.2016 9:41, Jonathan Hull via swift-evolution wrote:
> I would really like to see something like the following added to the
> standard library:
>
> extensionDictionary{
>
>
> 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
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
More information about the swift-evolution
mailing list