Generator should always generates value from start of sequence. I don't see any problems with this implementation.
Dave Abrahams via swift-evolution <swift-evolution@swift.org> 於 2015年12月31日星期四 寫道: > On Dec 30, 2015, at 3:57 PM, Kevin Ballard via swift-evolution < > swift-evolution@swift.org > <javascript:_e(%7B%7D,'cvml','swift-evolution@swift.org');>> 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 swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution