インスタンスでシングルトン メソッドを定義できない Ruby クラスがいくつかあります。たとえば、Symbol
次のとおりです。
var = :asymbol
def var.hello
"hello"
end
# TypeError: can't define singleton method "hello" for Symbol
これはすべての即時値に対する制限であると考えましたがnil
、 、true
、およびfalse
Fixnum
(またはのインスタンスではなくBignum
) で機能するようです。
var = true
def var.hello
"hello"
end
var.hello #=> "hello"
なぜRubyがオブジェクトの特定のクラスでシングルトンメソッドを定義できるのに、他のクラスでは定義できないのか理解できません。