これを見てどうも Java や C++ の話のように思ったのだが、最初の「『等値』と『等価』の違いを説明してください」というのがよくわからなかった。僕は Ruby しか知らない素人初心者プログラマなのだが、Ruby だとどういうことなのだろう。
ただ、Ruby でも「==」と「equal?」はちがうよね。
irb(main):001:0> a = "hoge" => "hoge" irb(main):002:0> b = "hoge" => "hoge" irb(main):003:0> a == b => true irb(main):004:0> a.equal?(b) => false irb(main):005:0> a.object_id => 47028457345780 irb(main):006:0> b.object_id => 47028458255160 irb(main):007:0> a = b = "hoge" => "hoge" irb(main):008:0> a.equal?(b) => true
上を見ればわかると思うけれども、「==」はオブジェクトが同じ内容なら true、「equal?」は同じオブジェクトID でなければ true にならない。上の「等値」と「等価」というのは、これと関係があるのかな。