Skip to content

Commit

Permalink
Merge pull request #2861 from kyanagi/range_reverse_each
Browse files Browse the repository at this point in the history
`Range#reverse_each`の記述を追加
  • Loading branch information
znz authored May 4, 2024
2 parents c9a4a68 + 2a4f58f commit c8d0579
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 5 deletions.
10 changes: 5 additions & 5 deletions refm/api/src/_builtin/Enumerable
Original file line number Diff line number Diff line change
Expand Up @@ -1112,11 +1112,11 @@ e.take_while {|i| i < 3 } # => [1, 2]
[[c:Enumerator]] を返します。

#@samplecode 例
(1..3).reverse_each # => #<Enumerator: 1..3:reverse_each>
(1..3).reverse_each { |v| p v }
# => 3
# 2
# 1
{a: 1, b: 2, c: 3}.reverse_each # => #<Enumerator: ...>
{a: 1, b: 2, c: 3}.reverse_each { |v| p v }
# => [:c, 3]
# [:b, 2]
# [:a, 1]
#@end

--- each_with_object(obj) -> Enumerator
Expand Down
24 changes: 24 additions & 0 deletions refm/api/src/_builtin/Range
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,30 @@ Range#each は各要素の succ メソッドを使用してイテレーション
# raises: TypeError: can't iterate from Float
#@end

#@since 3.3
--- reverse_each -> Enumerator
--- reverse_each {|element| ... } -> self

逆順に各要素に対してブロックを評価します。

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

ブロックを省略した場合は、各要素を逆順に辿る
[[c:Enumerator]] を返します。

@raise TypeError 終端を持たない範囲オブジェクトに対してこのメソッドを呼んだ場合に発生します。

#@samplecode 例
(1..3).reverse_each # => #<Enumerator: ...>
(1..3).reverse_each { |v| p v }
# => 3
# 2
# 1
(1..).reverse_each { |v| p v } # raises: TypeError: can't iterate from NilClass
#@end

#@end

--- end -> object
--- last -> object

Expand Down

0 comments on commit c8d0579

Please sign in to comment.