[ruby-list:50866] Re: __id__ メソッドでの super について
From:
Koichi Sasada <ko1@...>
Date:
2020-01-01 06:00:48 UTC
List:
ruby-list #50866
ささだです。
BasicObject クラスに対する __id__ を呼んでいるためです。
p BasicObject.__id__
#=> 60
p BasicObject.method(:__id__)
#=> #<Method: BasicObject.__id__() t.rb:2>
p BasicObject.method(:__id__).super_method
#=> #<Method: BasicObject#__id__()>
class BasicObject
def __id__
super
end
end
p BasicObject.__id__
#=> t.rb:18:in `__id__': super: no superclass method `__id__' for
BasicObject:Class (NoMethodError)
On 2020/01/01 3:10, Akret Node wrote:
> のぐちです。
>
> あけましておめでとうございます。
>
> class BasicObject
> def self.__id__
> super
> end
> end
>
> p BasicObject.__id__ #=> 47444468263960
>
> BasicObject には親クラスがないはずですが self.__id__ の中で super
> を読んでみると正しくオブジェクトIDが取得できているようです。これはどのような理屈で取得できているのでしょうか?
>
> 親クラスに同名のメソッドがなければ、「no superclass method `xxx' for 'yyy'」と例外になるはずですが、上記ではなりません。。。
>
--
// SASADA Koichi at atdot dot net