A Set has indices because they are useful to use with the type. Regardless of whether Set conforms to Collection, or even Sequence, indices are useful and meaningful for Sets. Even if the entire protocol hierarchy were to be redesigned, Set would provide indices. If Set didn’t implement any protocols at all, Set would still provide indices. Independent of whether Set even provides an Iterator, Set would still provide Indices.
> On Oct 16, 2017, at 10:19 AM, Kevin Nattinger <[email protected]> wrote: > >>> […] >>> Set conforming to Collection is even worse than just conforming to Sequence >>> as a quote from the documentation shows: "In addition to the operations >>> that collections inherit from the Sequence protocol, you gain access to >>> methods that depend on accessing an element at a specific position in a >>> collection." >>> Clearly the elements of a Set do not have specific positions. >>> >> >> That’s not at all clear to me, could you elaborate? My understanding is that >> elements of Set definitely *do* have a position, and that’s why you can use >> an index on a set to retrieve the element. The same index on the same set >> retrieves the same element. > > A Set only has "indices" because it confirms to a protocol where almost all > the requirements are meaningless for an unordered collection. Or at best, for > the same reason it has an "order": as a side-effect of the fact that it can > be iterated over, you can give indices for each element on a specific > iteration; those indices are meaningless for the set itself, and should not > be used for anything but a full, order-independent iteration.
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
