Ruby配列の比較と差分を完全ガイド!初心者でもわかる==・<=>・-・&の使い方
生徒
「Rubyの配列って、同じかどうか比べたり、違いを調べたりできるんですか?」
先生
「できますよ。Rubyの配列には、比較や差分を調べるための便利な記号や仕組みがあります。」
生徒
「記号って難しそうですが、初心者でも大丈夫ですか?」
先生
「大丈夫です。身近な例えを使いながら、一つずつゆっくり説明します。」
1. 配列の比較とは何をすること?
Rubyの配列(Array)の比較とは、「この配列とあの配列は同じ内容か」「どちらが先に並ぶか」 「共通している要素は何か」「違う部分はどこか」を調べることです。 たとえば、買い物メモを二つ持っていて、「内容が同じか」「片方にしかない商品は何か」を確認する場面を想像してください。 プログラムでも同じように、配列の中身を比べる処理がよく登場します。
Rubyでは、==、<=>、-、&といった記号を使うことで、
配列の比較や差分を簡単に書くことができます。
2. == で配列が同じかどうかを比べる
==は「イコールが二つ並んだ記号」で、「内容が同じかどうか」を調べます。
Rubyの配列では、要素の順番と中身がすべて同じ場合にだけ、同じと判断されます。
これは、同じ順番で並んだ名簿を二つ見比べて、「名前も順番も全部同じか」を確認するイメージです。
a = [1, 2, 3]
b = [1, 2, 3]
c = [3, 2, 1]
puts a == b
puts a == c
true
false
このように、同じ数字が入っていても順番が違うとfalseになります。
ここでのtrueとfalseは、「正しい」「正しくない」を表すRubyの値です。
3. <=> で配列の順序を比較する
<=>は宇宙船演算子と呼ばれ、「どちらが先か」を比べるための記号です。
名前は少し変わっていますが、やっていることは単純です。
左の配列が小さいと-1、同じなら0、右の配列が小さいと1を返します。
辞書で単語を比べるように、先頭から順番に中身を見て判断します。
[1, 2, 3] <=> [1, 2, 4]
[1, 2, 3] <=> [1, 2, 3]
[2, 1] <=> [1, 9]
-1
0
1
数字が小さいほうが「前」と判断されます。 並び替えや順番を決める処理の内部で、この仕組みがよく使われています。
4. -(差集合)で違う要素を取り出す
-は差集合と呼ばれ、「左の配列にあって、右の配列にないもの」を取り出します。
これは、二つの買い物メモを比べて「自分のメモにだけ書いてある商品」を探すイメージです。
a = [1, 2, 3, 4]
b = [3, 4, 5]
p a - b
[1, 2]
重複している3と4は消え、違うものだけが残ります。
配列の差分を知りたいときにとても便利です。
5. &(積集合)で共通の要素を取り出す
&は積集合と呼ばれ、「両方の配列に共通して入っている要素」を集めます。
共通点だけを抜き出すイメージです。
a = [1, 2, 3, 4]
b = [3, 4, 5]
p a & b
[3, 4]
両方に入っている数字だけが結果になります。 データの共通部分を調べたい場面でよく使われます。
6. 配列比較と差分を使うと何ができる?
Rubyの配列比較や差分の考え方を知っておくと、 データの確認、変更点のチェック、重複の発見などが簡単に書けるようになります。 プログラムが長くなっても、短く読みやすいコードを書けるのがRubyの強みです。
最初は記号が多くて戸惑うかもしれませんが、 「同じか」「順番はどうか」「違いは何か」「共通点は何か」 という視点で見ると、どれも身近な考え方だと気づけます。