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