Ruby_Array_51

この記事は、以下のドキュメントを改変(自分なりに整理)して利用しています。

class Array (Ruby 3.1 リファレンスマニュアル)

インスタンスメソッド

rotate(cnt = 1) -> Array
  • cntで指定したインデックスの要素が先頭になる配列を新しく生成する
    • 負の数を指定した場合、逆の操作を行う
    • 指定しなかった場合、cntは1になる
    • 整数以外の(暗黙の型変換が行えない)オブジェクトを指定した場合はTypeErrorが発生する
irb(main):001:0> arr = %w[a b c d e]
=> ["a", "b", "c", "d", "e"]

irb(main):002:0> arr.rotate
=> ["b", "c", "d", "e", "a"]

irb(main):003:0> arr
=> ["a", "b", "c", "d", "e"]

irb(main):004:0> arr.rotate(1)
=> ["b", "c", "d", "e", "a"]

irb(main):005:0> arr.rotate(4)
=> ["e", "a", "b", "c", "d"]

irb(main):006:0> arr.rotate(5)
=> ["a", "b", "c", "d", "e"]

irb(main):007:0> arr.rotate(-2)
=> ["d", "e", "a", "b", "c"]
irb(main):001:0> %w[a b c d e].rotate(1.0)
=> ["b", "c", "d", "e", "a"]

irb(main):002:0> %w[a b c d e].rotate('1')
Traceback (most recent call last):
        5: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `<main>'
        4: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `load'
        3: from /Users/mfham/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>'
        2: from (irb):2:in `<main>'
        1: from (irb):2:in `rotate'
TypeError (no implicit conversion of String into Integer)
rotate!(cnt = 1) -> self
  • cntで指定したインデックスの要素が先頭になるように自身の順番を変更する
    • 負の数を指定した場合、逆の操作を行う
    • 指定しなかった場合、cntは1になる
    • 整数以外の(暗黙の型変換が行えない)オブジェクトを指定した場合はTypeErrorが発生する
irb(main):001:0> arr = %w[a b c d e]
=> ["a", "b", "c", "d", "e"]

irb(main):002:0> arr.rotate!
=> ["b", "c", "d", "e", "a"]

irb(main):003:0> arr
=> ["b", "c", "d", "e", "a"]

irb(main):004:0> arr.rotate!(3)
=> ["e", "a", "b", "c", "d"]

irb(main):005:0> arr
=> ["e", "a", "b", "c", "d"]

irb(main):006:0> arr.rotate!(-2)
=> ["c", "d", "e", "a", "b"]

irb(main):007:0> arr
=> ["c", "d", "e", "a", "b"]
irb(main):008:0> 
irb(main):001:0> %w[a b c d e].rotate!(1.0)
=> ["b", "c", "d", "e", "a"]

irb(main):002:0> %w[a b c d e].rotate!('1')
Traceback (most recent call last):
        5: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `<main>'
        4: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `load'
        3: from /Users/mfham/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>'
        2: from (irb):2:in `<main>'
        1: from (irb):2:in `rotate!'
TypeError (no implicit conversion of String into Integer)