Maison > Questions et réponses > le corps du texte
HI,以下是小弟的尝试:
p=lambda {|x| x*x}
q=p.dup
puts q==p #out false
puts p.object_id
puts q.object_id
为什么是false呢?
PHP中文网2017-04-24 09:13:42
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, Two procs are == only when they are the same object.
ne renvoie ==
que si les deux procs sont le même objet. true
天蓬老师2017-04-24 09:13:42
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