Rubyのrotateとrotate!メソッド:配列の要素をローテーションする
Rubyで配列を扱う際、配列の要素をローテーション(回転)させることは一般的な操作の一つです。
rotateとrotate!メソッドはこの目的に用いられ、配列の要素を指定した数だけ回転させる機能を提供します。
この記事では、これらのメソッドの使い方、違い、そして実践的な使用例を詳しく解説します。
rotateメソッドの基本
rotateメソッドは、配列の要素を指定した数だけ回転させ、新しい配列を返します。このメソッドは元の配列を変更しません。
基本的な使用方法
配列の要素を回転させます。引数に何回回転させるかを指定します。
ソースコード例: rotateメソッドの基本的な使用
1 2 3 |
array = [1, 2, 3, 4, 5] rotated_array = array.rotate(2) puts rotated_array |
この例では、配列の要素が2つ分回転して、新しい配列が返されます。
出力結果
3
4
5
1
2
![](https://csharpprogram.com/wp-content/uploads/2021/04/無題824_20230225215240-300x300.png)
KindleUnlimited会員であれば、全ての本をご覧頂けます。 配列、イテレータ、ブロックを理解すれば、Rubyプログラミングの世界が変わる 第1版
![](https://csharpprogram.com/wp-content/uploads/2023/03/Ruby1(枠あり)-188x300.jpg)
rotate!メソッドの基本
rotate!メソッドも配列の要素を回転させますが、rotateと異なり元の配列自体を変更します。このメソッドを使用すると、配列の内容がその場で回転します。
破壊的な方法で配列を回転させる
元の配列を直接回転させます。
ソースコード例: rotate!メソッドの使用
1 2 3 |
array = [1, 2, 3, 4, 5] array.rotate!(2) puts array |
この例では、元の配列が2つ分回転されます。
出力結果
3
4
5
1
2
![](https://csharpprogram.com/wp-content/uploads/2021/04/無題824_20230225215240-300x300.png)
rotateとrotate!の違い
rotateとrotate!の主な違いは、元の配列を変更するかどうかです。rotateは元の配列を変更せず、新しい配列を返します。一方でrotate!は元の配列を直接変更します。
同じ条件でrotateとrotate!を使った場合
同じ条件でrotateとrotate!を使用した場合の違いを確認します。
ソースコード例: rotateとrotate!の違い
1 2 3 4 5 6 |
original_array = [1, 2, 3, 4, 5] rotated_array = original_array.rotate(2) original_array.rotate!(2) puts "Rotated array: #{rotated_array}" puts "Original array after rotate!: #{original_array}" |
この例では、rotateで作成された新しい配列と、rotate!によって変更された元の配列を比較します。
出力結果
Rotated array: 3 4 5 1 2
Original array after rotate!: 3 4 5 1 2
![](https://csharpprogram.com/wp-content/uploads/2021/04/無題824_20230225215240-300x300.png)
応用例
rotateとrotate!メソッドは、単純な数値や文字列の配列だけでなく、オブジェクトを含む複雑な配列にも応用できます。
オブジェクトの配列での使用
オブジェクトを含む配列でのrotate/rotate!メソッドの使用例を見てみましょう。
ソースコード例: オブジェクトの配列でのrotate/rotate!メソッドの使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class Product attr_reader :name, :price def initialize(name, price) @name = name @price = price end end products = [ Product.new("Apple", 120), Product.new("Banana", 80), Product.new("Cherry", 200) ] rotated_products = products.rotate(1) puts rotated_products.map(&:name) |
この例では、商品の配列の順序が回転されます。
出力結果
Banana
Cherry
Apple
![](https://csharpprogram.com/wp-content/uploads/2021/04/無題824_20230225215240-300x300.png)
まとめ
Rubyのrotateとrotate!メソッドは、配列の要素を回転させるためのメソッドです。
これらのメソッドを適切に使用することで、Rubyプログラミングにおける配列操作の幅が広がります。
元の配列を変更するかどうかを理解し、状況に応じて適切なメソッドを選択することが重要です。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
![](https://csharpprogram.com/wp-content/uploads/2021/04/無題825_20230315133637-300x300.png)