質問: 特定のメソッドのエイリアスがあれば表示する方法 こちらで質問させて頂いたときに`group_by`の同値判定が`==`でも`eql?`でもなく、何か別の物が使われているようだとわかったのですが、何が使われているのか探してもドキュメントが見つかりませんでした。 rubyのソースコードで`def group_by`で検索もしてみたのですがテストコードしか見つかりませんでした...。 `group_by`はどのような条件で同一だと判定しているのでしょうか?
回答: `group_by`はハッシュを組み立てるので使われるとしたら`hash`じゃないでしょうか。 試してみるとこうなりました。 ``` irb(main):043:0> a = Object.instance_method(:debugger) => # irb(main):044:0> b = Object.instance_method(:byebug) => # irb(main):045:0> a == b => true irb(main):046:0> a.eql?(b) => true irb(main):047:0> a.hash == b. hash => false irb(main):048:0> Hash.instance_method(:has_key?).hash == Hash.instance_method(:member?).hash => true ``` なお、Object#hashのマニュアルには > > > > > > A.eql?(B) ならば A.hash == B.hash > > > > > > > > > の関係を必ず満たしていなければいけません。 > > > という記載がありますが、上記の挙動はこの通りになってないようです