はじめに
Rubyには、配列や他のコレクションを操作するための多くの便利なメソッドが用意されています。以下に、よく使われるメソッドやその機能をいくつか紹介します。
配列の操作メソッド
each
配列の各要素に対してブロックを繰り返し適用します。
[1, 2, 3].each { |num| puts num }
1
2
3
=> [1, 2, 3]
map
配列の各要素に対してブロックを適用し、その結果を新しい配列として返します。
squares = [1, 2, 3].map { |num| num * num }
=> [1, 4, 9]
select
条件に合致する要素を選択して新しい配列として返します。
evens = [1, 2, 3, 4, 5].select { |num| num.even? }
=> [2, 4]
reject
条件に合致しない要素を選択して新しい配列として返します。
odds = [1, 2, 3, 4, 5].reject { |num| num.even? }
=> [1, 3, 5]
reduce / inject
初期値(または最初の要素)から始めて、ブロックを使って要素を結合して単一の値に集計します。
sum = [1, 2, 3].reduce(0) { |acc, num| acc + num }
=> 6
sort
配列の要素を並べ替えます。
sorted = [3, 1, 2].sort
=> [1, 2, 3]
count
配列内の要素の数を数えます。
count = [1, 2, 3, 4, 5].count
=> 5
uniq
配列から重複する要素を除いた新しい配列を返します。
unique = [1, 2, 2, 3, 3, 3].uniq
=> [1, 2, 3]
ハッシュの操作メソッド
each
ハッシュの各キーと値に対してブロックを繰り返し適用します。
{ name: 'Alice', age: 30 }.each { |key, value| puts "#{key}: #{value}" }
name: Alice
age: 30
=> {:name=>"Alice", :age=>30}
each_key / each_value
ハッシュのキーまたは値に対してブロックを繰り返し適用します。
{ name: 'Alice', age: 30 }.each_key { |key| puts key }
name
age
=> {:name=>"Alice", :age=>30}
{ name: 'Alice', age: 30 }.each_value { |value| puts value }
Alice
30
=> {:name=>"Alice", :age=>30}
select
条件に合致するキーと値のペアを選択して新しいハッシュとして返します。
over_20 = { Alice: 30, Bob: 25, Carol: 18 }.select { |key, value| value > 20 }
=> {:Alice=>30, :Bob=>25}
transform_values
ハッシュの値をブロックで変換し、新しいハッシュを作成します。
ages = { Alice: 30, Bob: 25 }.transform_values { |age| age * 2 }
=> {:Alice=>60, :Bob=>50}
その他のコレクションの操作メソッド
Range#each
範囲の各要素に対してブロックを繰り返し適用します。
(1..5).each { |num| puts num }
1
2
3
4
5
=> 1..5
Set
ユニークな要素の集合を管理するためのクラスです。配列と同様に each, map, select などのメソッドが使えます。
require 'set'
my_set = Set.new([1, 2, 3])
=> #<Set: {1, 2, 3}> 2, 3])
まとめ
これらのメソッドは、Rubyでコレクションを効率的に操作し、データの変換、フィルタリング、集計などの処理を行う際に便利です。それぞれのメソッドは特定のタスクを達成するために設計されており、適切に組み合わせることでより複雑な処理を簡潔に表現することができます。