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