[swift-evolution] [Review] SE-0094: Add sequence(initial:next:) and sequence(state:next:) to the stdlib

Brent Royal-Gordon brent at architechies.com
Thu May 19 18:46:43 CDT 2016


> Also note that there's a typo in the second example:
> 
> for view in sequence(initial: someView, next: { $0.
> superview }) {
>     
> // someView, someView.superview, someView.superview.superview, ...
> 
> }
> 
> 
> should be:
> 
> for view in sequence(state: someView, next: { $0.
> superview }) {
>     
> // someView, someView.superview, someView.superview.superview, ...
> 
> }

I don't think these are mistakes—in each iteration of the loop, $0 is supposed to be the view from the previous iteration.

If you wanted an example using `state`, here's one which is roughly equivalent to `stride(from: 1.0, to: 2.0, by: 0.1)`, using a non-error-accumulating algorithm:

	let start = 1.0
	let end = 2.0
	let distance = 0.1
	
	for color in sequence(state: -1.0, next: { $0 += 1; let next = start + $0 * distance; return next < end ? next : nil }) {
		…
	}

-- 
Brent Royal-Gordon
Architechies



More information about the swift-evolution mailing list