Rubyで文字列を比較する方法:eql?, equal?, ==, ===

今回はRubyにおける文字列の比較について解説します。

文字列の比較

Rubyで文字列を比較する時はeql?equal?=====を使用します。

ではどう使い分ければ良いのでしょうか。

eql?

eql?は同値性を比較します。

文字列の内容が変わらなければtrueを返します。

主にハッシュ内でのキーが同一かどうかの判断に用いられます。

例:

milk = "milk"

puts milk.eql?("milk") # >>true
puts milk.eql?("coffee") # >>false

==

==はeql?と同様に同値性を比較するものです。

例:

milk = "milk"

puts milk == "milk" # >>true
puts milk == "coffee" # >>false

===

===はほぼ==と同様の性質を持っています。

暗黙的にcase文においてテストする際使用されています。

equal?

equal?は同一性を比較しています。

文字列の内容が一緒でも、異なるオブジェクトであればfalseを返します。

例:

milkman = "milk"
milkwoman = "milk"

puts milkman.equal?(milkwoman) # >>false
puts milkman.equal?(milkman) # >>true

まとめ

このように比較においても様々な使い分けがあります。

注意して使い分けましょう。


イベント

2017/12/05(火)
Design Thinking Square