今回はRubyにおける文字列の比較について解説します。
文字列の比較
Rubyで文字列を比較する時はeql?、equal?、==、===を使用します。
ではどう使い分ければ良いのでしょうか。
eql?
eql?は同値性を比較します。
文字列の内容が変わらなければtrueを返します。
主にハッシュ内でのキーが同一かどうかの判断に用いられます。
例:
1 2 3 4 |
milk = "milk" puts milk.eql?("milk") # >>true puts milk.eql?("coffee") # >>false |
==
==はeql?と同様に同値性を比較するものです。
例:
1 2 3 4 |
milk = "milk" puts milk == "milk" # >>true puts milk == "coffee" # >>false |
===
===はほぼ==と同様の性質を持っています。
暗黙的にcase文においてテストする際使用されています。
equal?
equal?は同一性を比較しています。
文字列の内容が一緒でも、異なるオブジェクトであればfalseを返します。
例:
1 2 3 4 5 |
milkman = "milk" milkwoman = "milk" puts milkman.equal?(milkwoman) # >>false puts milkman.equal?(milkman) # >>true |
まとめ
このように比較においても様々な使い分けがあります。
注意して使い分けましょう。