Ruby silverの模擬問題を抜粋して解説をしていきます。
下記コードの出力結果を4択から選ぶ問題になっています。
a = "victory"
b = "victory"
c = a
(1)p a.eql?(b)
(2)p a.eql?(c)
(3)p a.equal?(b)
(4)p a.equal?(c)
1.(1)true (2)true (3)false (4)true
2.(1)false (2)false (3)true (4)true
3.(1)true (2)true (3)false (4)false
4.(1)true (2)true (3)true (4)true
まず、変数a b cにそれぞれの値を代入してます。
a = "victory"
b = "victory"
c = a
次に'.eql?'のメソッドは、それぞれのオブジェクトの値が等しいかどうかを比較します。
等しいときは'true',等しくないときは'false'を返します。
'.eql?'の公式リファレンス
(1)は変数'a'と変数'b'の値は等しいですので出力結果は'true'になります。
a = "victory"
b = "victory"
c = a
(1)p a.eql?(b)
(2)は変数'a'と変数'c'の値は等しいですので出力結果は'true'になります。
a = "victory"
b = "victory"
c = a
(2)p a.eql?(c)
次に'.equal?'のメソッドは、それぞれのオブジェクトが同じオブジェクトかどうかを比較します
等しいときは'true',等しくないときは'false'を返します。
'.equal?'の公式リファレンス
(3)は変数'a'と変数'b'は同じオブジェクトではないので出力結果は'false'になります。
a = "victory"
b = "victory"
c = a
(3)p a.equal?(b)
(4)は変数'a'と変数'c'は変数'c'変数'a'を代入しているので、同一のオブジェクトになりますので出力結果は'true'になります。
a = "victory"
b = "victory"
c = a
(4)p a.equal?(c)
解答は、1番が正解になります。