Skip to content

Commit 484a553

Browse files
Watson1978claude
andcommitted
Range#reverse_each: 始端なし範囲(beginless)の反復に対応した旨を追記 (3.3)
Ruby 3.3 で Range#reverse_each が、終端が Integer の始端なし範囲(beginless range、例: (..5))を終端から下降しながら反復できるようになった (Feature #18515)。既存エントリ(#@SInCE 3.3)に説明と例を追記。終端なし範囲(endless range)で TypeError になる件 (Feature #18551) は既に反映済み。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 61ef92d commit 484a553

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

manual/api/_builtin/Range.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,10 @@ Range#each は各要素の succ メソッドを使用してイテレーション
425425

426426
内部で各要素を保持した配列を作ります。ただし、端点が [c:Integer] である場合は、配列を作らないように最適化が行われています。
427427

428+
始端を持たない範囲(beginless range)であっても、終端が [c:Integer] であれば、
429+
終端から下降しながら反復できます。この場合は要素が無限に生成されるため、
430+
`first``take` で打ち切るか、ブロック内で break してください。
431+
428432
ブロックを省略した場合は、各要素を逆順に辿る
429433
[c:Enumerator] を返します。
430434

@@ -436,6 +440,9 @@ p (1..3).reverse_each # => #<Enumerator: ...>
436440
# => 3
437441
# 2
438442
# 1
443+
# 始端を持たない範囲は終端から下降しながら反復する(無限に生成される)
444+
p (..5).reverse_each.first(3) # => [5, 4, 3]
445+
439446
(1..).reverse_each { |v| p v } # raises: TypeError: can't iterate from NilClass
440447
```
441448

0 commit comments

Comments
 (0)