map-like operation that returns a dictionary

Agreed, for three reasons:

1. A failable initializer would require the user to validate the input sequence, which is painful, and inefficient. Do you see yourself checking if `Set(sequence.map { $0.0 }).count == 1` before creating the dictionary ? If user cares about unique keys, it’s much easier to post-check for `dic.count == input.count`.

2. We can assume that users will be well aware that a dictionary builder from a sequence will lose information for duplicated keys, just as users are already well aware that an inversed dictionary (key <-> values) loses information for duplicated values. A failable initializer would actually *surprise* most users.

3. A clear rule on which value is used in case of duplicated key (such as: the last one is used) allows users to opt-in for explicit choice of the first one by reversing the sequence.

Gwendal

···

Le 15 janv. 2016 à 09:45, David Hart via swift-evolution <swift-evolution@swift.org> a écrit :

It may sound counter-intuitive to have such an initialiser failable for many users. I *think* I would prefer it to silently use the last key.

On 15 Jan 2016, at 01:31, Brent Royal-Gordon via swift-evolution <swift-evolution@swift.org> wrote:

One caveat is that the new initializer doesn't prevent using a sequence with multiple identical keys. In such a case, the last key/value would "win" and exist in the dictionary.

Another alternative would be to make the initializer failable and have it fail if a key is duplicated.

--
Brent Royal-Gordon
Architechies

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution