#7 Rubyで学ぶ配列の基本
Rubyの配列は、Pythonのリストと同じくらい手軽に扱えるデータ構造です。この記事では、Rubyにおける配列の基本的な使い方を、つまずきやすいポイントも含めて解説します。
配列を作ってみる
fruits = ["りんご", "みかん", "ぶどう"]
Rubyの配列は大きさを自由に変えられ、異なる種類のデータを混ぜて入れることもできます。
要素にアクセスする
puts fruits[0] # りんご
Rubyでは、fruits[-1]のようにマイナスの添字を使うと、後ろから数えた要素にアクセスできます。
puts fruits[-1] # ぶどう(最後の要素)
値を追加・削除する
配列の最後に値を追加するにはpush(または<<という記号)を使います。
fruits.push("メロン")
fruits << "スイカ"
値を削除する方法はいくつかあります。特定の値を消したいならdelete、末尾を1つ取り出しながら削除したいならpop、先頭を取り出しながら削除したいならshiftが使えます。
fruits.delete("りんご") # 値を指定して削除
last = fruits.pop # 末尾を取り出しつつ削除
first = fruits.shift # 先頭を取り出しつつ削除
ループ処理で配列を扱う
配列の各要素に順番に処理をしたいときはeachを使います。
fruits.each do |fruit|
puts fruit
end
各要素を加工した「新しい配列」を作りたいときはmapを使います。
lengths = fruits.map { |fruit| fruit.length }
# 各果物の名前の文字数だけを集めた新しい配列ができる
条件に合う要素だけを集めたいときはselect(逆に除外したいときはreject)が便利です。
long_names = fruits.select { |fruit| fruit.length >= 3 }
each・map・selectのようなメソッドは「Enumerable」というモジュールに由来するもので、配列を柔軟に処理できるのがRubyの大きな魅力の1つです。
Rubyならではの注意点
<<という記号を使った追加方法は、Rubyに慣れていないと最初は違和感があるかもしれません。しかし「配列に値を押し込む」というイメージを持つと、直感的に理解しやすくなります。また、eachはブロックの戻り値に関わらず常に元の配列自身を返すのに対し、mapはブロックの戻り値を集めた「新しい配列」を返すという違いに注意しましょう。「新しい配列が欲しいのにeachを使ってしまい、思った結果が得られない」というのは初心者がよくハマるポイントです。
まとめ
Rubyの配列は手軽に作れて、マイナスの添字や<<による追加など、独自の便利な書き方が用意されています。each・map・selectといったEnumerableのメソッドを使い分けられるようになると、配列操作の幅がぐっと広がります。
本ページはプロモーションを含みます。
参考書籍(PR)
Rubyをもっと学びたい方には「プロを目指す人のためのRuby入門[改訂2版]」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿