> On Dec 30, 2015, at 3:57 PM, Kevin Ballard via swift-evolution > <[email protected]> wrote: > > It's sometimes useful to get the first element of a sequence. To that end I'd > like to propose > > extension SequenceType { > /// Returns the first element of `self`, or `nil` if `self` is empty. > /// - Complexity: O(1) > var first: Self.Generator.Element? { > var gen = generate() > return gen.next() > } > } > > I think it makes sense to add this property to the definition of SequenceType > as well, so various sequences can override it to avoid constructing a > generator. > > With this added to SequenceType, we can remove it from CollectionType, as the > behavior will be the same.
Property accesses should not mutate the receiver, and because of how Sequences work, inspecting first may consume the first element. I suggest you consider adding a BufferedSequence<Base: SequenceType> that has a stable first property (at least until it is iterated) Another related adapter I’d like to add is a model of CollectionType that is backed by a sequence and lazily populated in fixed-sized chunks. -Dave
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
