Есть несколько классов 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 позволяет определять одноточечные методы для определенных классов объектов, но не для других.