[swift-evolution] Proposal: Add SequenceType.first

Brent Royal-Gordon brent at architechies.com
Sat Jan 2 06:42:46 CST 2016

May I suggest a simple solution?

	extension SequenceType {
		/// Returns one element from the beginning of the sequence, or `nil` if the sequence is empty.
		/// If `self` is a single-pass sequence, this may consume the element.
		func one() -> Generator.Element? {
			var generator = generate()
			return generator.next()

This should probably be a method in the protocol, and CollectionType should have an override which calls `first`.

The BufferedSequence stuff suggested elsewhere is probably useful too, and should be considered in addition to this, but I think this would cover the most common case.

Brent Royal-Gordon

More information about the swift-evolution mailing list