@@ -523,23 +523,54 @@ Range#each は各要素の succ メソッドを使用してイテレーション
523523
524524範囲内の要素を s おきに繰り返します。
525525
526- #@since 2.6.0
526+ #@since 3.4
527+ @param s 次のステップへ遷移するたびに加算されるものを指定します。
528+ #@else
527529@param s 各ステップの大きさを数値で指定します。負の数を指定することもできます。
530+ #@end
528531@return ブロックを指定した時は self を返します。
529532@return ブロックを指定しなかった時かつ数値の Range の時は [[c:Enumerator::ArithmeticSequence]] を返します。
530533@return ブロックを指定しなかったその他の Range の時は [[c:Enumerator]] を返します。(例: String の Range)
531- #@else
532- @param s 正の整数を指定します。
533- @return ブロックつきの時は self を返します。
534- @return ブロックなしの時は [[c:Enumerator]] を返します。
535- @raise ArgumentError s に 0 または負の数を指定した場合に発生します
536- #@end
537534
538535#@samplecode 例
539- ("a" .. "f").step(2) {|v| p v}
536+ (1..10).step(3) {|v| p v}
537+ # => 1
538+ # 4
539+ # 7
540+ # 10
541+
542+ ("a".."f").step(2) {|v| p v}
540543# => "a"
541544# "c"
542545# "e"
546+
547+ (10..0).step(-3) {|v| p v}
548+ # => 10
549+ # 7
550+ # 4
551+ # 1
552+ #@end
553+
554+ #@since 3.4
555+
556+ 非数値の Range では、イテレーションに「要素 + s」を使用します。
557+ (文字列またはシンボルの Range で s に数値を指定した場合を除きます)
558+
559+ #@samplecode 数値以外の Range に対する例
560+ # Time の Range は each でイテレートできない
561+ (Time.utc(2024, 12, 25)...Time.utc(2024, 12, 26)).each { |t| p t }
562+ # => 'Range#each': can't iterate from Time (TypeError)
563+
564+ # step は使用可能
565+ (Time.utc(2024, 12, 25)...Time.utc(2024, 12, 26)).step(60*60*6) { |t| p t }
566+ # => 2024-12-25 00:00:00 UTC
567+ # 2024-12-25 06:00:00 UTC
568+ # 2024-12-25 12:00:00 UTC
569+ # 2024-12-25 18:00:00 UTC
570+
571+ ("a"..).step("*").take(3) # => ["a", "a*", "a**"]
572+ #@end
573+
543574#@end
544575
545576--- ==(other) -> bool
0 commit comments