Skip to content

Commit

Permalink
Range#reverse_eachの記述を追加
Browse files Browse the repository at this point in the history
Ruby 3.3からRange#reverse_eachの実装が追加されたため、記述を追加。
Enumrable#reverse_eachのサンプルコードはRangeからHashに変更。
  • Loading branch information
kyanagi committed Dec 28, 2023
1 parent 5ba48b7 commit 2a4f58f
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 @@ -387,6 +387,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 2a4f58f

Please sign in to comment.