Commit 077c87ba authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #2047 from suzukaze/add-array-rotate_bang

Add Array#rotate!
parents fe55b9dd 0898f40c
...@@ -382,4 +382,24 @@ class Array ...@@ -382,4 +382,24 @@ class Array
end end
ary ary
end end
##
# call-seq:
# ary.rotate!(count=1) -> ary
#
# Rotates +self+ in place so that the element at +count+ comes first, and
# returns +self+.
#
# If +count+ is negative then it rotates in the opposite direction, starting
# from the end of the array where +-1+ is the last element.
#
# a = [ "a", "b", "c", "d" ]
# a.rotate! #=> ["b", "c", "d", "a"]
# a #=> ["b", "c", "d", "a"]
# a.rotate!(2) #=> ["d", "a", "b", "c"]
# a.rotate!(-3) #=> ["a", "b", "c", "d"]
def rotate!(count=1)
self.replace(self.rotate(count))
end
end end
...@@ -156,3 +156,13 @@ assert("Array#rotate") do ...@@ -156,3 +156,13 @@ assert("Array#rotate") do
assert_equal ["c", "d", "a", "b"], a.rotate(10) assert_equal ["c", "d", "a", "b"], a.rotate(10)
assert_equal [], [].rotate assert_equal [], [].rotate
end end
assert("Array#rotate!") do
a = ["a", "b", "c", "d"]
assert_equal ["b", "c", "d", "a"], a.rotate!
assert_equal ["b", "c", "d", "a"], a
assert_equal ["d", "a", "b", "c"], a.rotate!(2)
assert_equal ["a", "b", "c", "d"], a.rotate!(-3)
assert_equal ["c", "d", "a", "b"], a.rotate(10)
assert_equal [], [].rotate!
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment