事实上:

Comparable.instance_methods # => [:clamp, :<=, :>=, :==, :<, :>, :between?]
Complex.ancestors # => [Complex, Numeric, Comparable, Object, PP::ObjectMixin, Kernel, BasicObject]
Complex.instance_methods.select{Comparable.instance_methods.include? _1} # => [:==]

当然,==在BasicObject中也有定义,所以即使是==也没那么重要.

这怎么可能?你能在Ruby中创建一个祖先方法吗?

是否可以删除所有方法?

推荐答案

可以通过两种方式删除方法:undef_methodremove_method

undef_method将删除完全调用该方法的能力,但remove_method将只删除当前方法,如果超级方法存在,则可以退回到超级方法.

class Foo
  undef_method :bar
end

Ruby相关问答推荐

Ruby Case语句和固定,不适用于attr_reader

Ruby脚本递归地创建深度嵌套的目录

带有(*)签名的Ruby方法

Ruby:如何在 vanilla ruby​​ 中使用有效支持日期?

如何用 yield_self 断链

Ruby 中的 Hash[key] 返回 nil 但 hash 没有 nil 值

Rack::Request - 如何获取所有标头?

Ruby 局部变量未定义

在 Ruby 早期转义 .each { } 迭代

在 Ruby 中将数组转换为索引哈希

理解|| Ruby 中 If 条件中的 OR 运算符

Rake 与 Thor 的自动化脚本?

有没有办法在 RSpec 中取消存根?

相当于 Ruby 中的通过

如何强制 Ruby 字符串为 n 个字符

Ruby中的file.open、open和IO.foreach,有什么区别?

安装 Jekyll 时出错 - 本机扩展构建

Ruby 实例变量何时设置?

为什么compass watch说它无法加载 sass/script/node (LoadError)?

更好的 ruby​​ markdown 解释器?