Generic Function

stride(from:through:by:)

Returns a sequence from a starting value toward, and possibly including, an end value, stepping by the specified amount. 指定の量だけ歩を進めて、始まりの値から終わりの値の方へ、そしてもしかするとそれを含めるシーケンスを返します。

Declaration 宣言

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. シーケンスに使うための開始値。シーケンスが何らかの値を含むならば、最初のものは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 from start using steps of stride. シーケンスに限界を設けるための終了値。endは、それがstartからstrideの間隔を使って生成可能であるときかつその場合に限り、結果のシーケンスの要素です。

stride

The amount to step by with each iteration. A positive stride iterates upward; a negative stride iterates downward. 各反復でそれだけ間隔をとることになる量。正のstrideは上向きに反復していきます;負のstrideは下向きに反復していきます。

Return Value 戻り値

A sequence from start toward, and possibly including, end. Each value in the sequence is separated by stride. startから、そして可能なら含めて、endへ向かってのシーケンス。このシーケンスの各値は、strideによって隔てられます。

Discussion 解説

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. あなたは、この関数を使ってStrideableプロトコルに準拠する任意の型、例えば整数や浮動小数点型の値いくつかをまたいで越すことができます。startで開始して、シーケンスのそれぞれ次の値はstrideを、次の値が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: あなたは、stride(from:through:by:)を使って上向きまたは下向きにまたいで越えるシーケンスを作成できます。負の値をstrideとして渡して、上方から開始して下方に終わるシーケンスを作成してください:


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. あなたがendとして渡す値は、シーケンスに含まれることを保証されません。startからstrideだけまたいで越えるならば、endを生成せず、シーケンスの最後の値は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. あなたがある値をstrideとして渡してそれがendから離れていくならば、シーケンスは全く値を含みません。


for x in stride(from: 0, through: 10, by: -1) {
    print(x)
}
// Nothing is printed.

See Also 参照

Strides ストライド