stride(from:through:by:)
Returns a sequence from a starting value toward, and possibly including, an end value, stepping by the specified amount.
func stride<T>(from start: T, through end: T, by stride: T.Stride) -> StrideThrough<T> where T : Strideable
Parameters
- start
The starting value to use for the sequence. If the sequence contains any values, the first one is
start
.- end
An end value to limit the sequence.
end
is an element of the resulting sequence if and only if it can be produced fromstart
using steps ofstride
.- stride
The amount to step by with each iteration. A positive
stride
iterates upward; a negativestride
iterates downward.
Returns
A sequence from start
toward, and possibly including, end
. Each value in the sequence is separated by stride
.
Overview
You can use this function to stride over values of any type that conforms to the Strideable
protocol, such as integers or floating-point types. Starting with start
, each successive value of the sequence adds stride
until the next value would be beyond end
.
for radians in stride(from: 0.0, through: .pi * 2, by: .pi / 2) {
let degrees = Int(radians * 180 / .pi)
print("Degrees: \(degrees), radians: \(radians)")
}
// Degrees: 0, radians: 0.0
// Degrees: 90, radians: 1.5707963267949
// Degrees: 180, radians: 3.14159265358979
// Degrees: 270, radians: 4.71238898038469
// Degrees: 360, radians: 6.28318530717959
You can use stride(from:through:by:)
to create a sequence that strides upward or downward. Pass a negative value as stride
to create a sequence from a higher start to a lower end:
for countdown in stride(from: 3, through: 1, by: -1) {
print("\(countdown)...")
}
// 3...
// 2...
// 1...
The value you pass as end
is not guaranteed to be included in the sequence. If stepping from start
by stride
does not produce end
, the last value in the sequence will be one step before going beyond end
.
for multipleOfThree in stride(from: 3, through: 10, by: 3) {
print(multipleOfThree)
}
// 3
// 6
// 9
If you pass a value as stride
that moves away from end
, the sequence contains no values.
for x in stride(from: 0, through: 10, by: -1) {
print(x)
}
// Nothing is printed.