有一些 Ruby 类不允许在它们的实例上定义单例方法。例如Symbol
:
var = :asymbol
def var.hello
"hello"
end
# TypeError: can't define singleton method "hello" for Symbol
我认为这可能是对所有直接值的限制,但它似乎适用于nil
、true
和false
Fixnum
(但不适用于or的实例Bignum
):
var = true
def var.hello
"hello"
end
var.hello #=> "hello"
我不明白为什么 Ruby 允许在某些对象类而不是其他对象上定义单例方法。