Ce livre devrait être assez ancien et la version Ruby que vous utilisez est antérieure à la 2.0. À partir de Ruby 2.0, le comportement de Proc#== a changé :
Depuis Ruby 2.0, Two procs are == only when they are the same object. ne renvoie == que si les deux procs sont le même objet. true
En regardant la documentation officielle de Ruby, lambda est en fait Proc Proc ne surcharge pas sa propre méthode ==, mais appelle la méthode == de BasicObject
Égalité — Au niveau de l'objet, == renvoie vrai uniquement si obj et other sont le même objet (la méthode de comparaison des objets au niveau de l'objet consiste à déterminer s'il s'agit du même objet). En règle générale, cette méthode est remplacée dans les classes descendantes pour fournir une signification spécifique à la classe.
Proc
Regardez la classe de base de Proc et vous pouvez voir qu'elle hérite d'Object, puis Object hérite de BasicObject
Problème de version.
Ce livre devrait être assez ancien et la version
Ruby
que vous utilisez est antérieure à la 2.0. À partir de Ruby 2.0, le comportement de Proc#== a changé :Depuis Ruby 2.0,
Référence :Two procs are == only when they are the same object.
ne renvoie==
que si les deux procs sont le même objet.true
En regardant la documentation officielle de Ruby, lambda est en fait Proc
Proc ne surcharge pas sa propre méthode ==, mais appelle la méthode == de BasicObject
Proc
Regardez la classe de base de Proc et vous pouvez voir qu'elle hérite d'Object, puis Object hérite de BasicObject