Hi, I very much think the points mentioned in the motivation are worth addressing (and IMO this is not an area where “maybe the optimizer can be made smarter” can cut it; I want performance guarantees, not hopes).
> On 11 Oct 2016, at 23:28, Nate Cook via swift-evolution > <swift-evolution@swift.org> wrote: [snip] On a shallow read I like presented approach, except for > Both the keys and values collections share the same index type as Dictionary. > This allows the above sample to be rewritten as: > > // Using `dict.keys.index(of:)` > if let i = dict.keys.index(of: "one") { > dict.values[i].append(1) > } else { > dict["one"] = [1] > } The asymmetry between the if / else branches seems ugly to me. That is once obtaining the value “directly” from dict, and once through the values-view. I don’t have a great solution here, but is is possible to subscript the dict by its `Index` as well as its `Key`? ``` // Using `dict.keys.index(of:)` if let i = dict.keys.index(of: "one") { dict[i].append(1) } else { dict["one"] = [1] } ``` On another note, I’m not sure whether there is a way (or whether it’s even worth trying) to avoid hashing the key twice when the `else` branch is taken. Daniel. _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution