我想测试一个类是否从另一个类继承,但似乎不存在这样的方法.

class A
end

class B < A
end

B.is_a? A 
=> false

B.superclass == A
=> true

我想要的一个微不足道的实现是:

class Class
  def is_subclass_of?(clazz)
    return true if superclass == clazz
    return false if self == Object
    superclass.is_subclass_of?(clazz)
  end
end

但我认为这已经存在了.

推荐答案

只需使用<运算符

B < A # => true
A < A # => false

或者使用<=运算符

B <= A # => true
A <= A # => true

Ruby相关问答推荐

Ruby将字符串中的反斜杠替换为双反斜杠

带有(*)签名的Ruby方法

有没有办法向用户返回 nil 消息但不中断 ruby​​ 中的应用程序?

.nil?、.blank? 之间的区别?和.empty?

获取字符串中的最后一个字符

Ruby 中有内置的二进制搜索吗?

Ruby 哈希文字的顺序是否得到保证?

确保如何在 ruby​​ 中工作

安装 RVM:需求安装失败,状态为:1

如何在Ruby中返回两个字符串之间的字符串的子字符串?

如何将 STDOUT 捕获到字符串?

格式化 Ruby 的漂亮打印

Vagrant - 如何拥有特定于主机平台的配置步骤

rails 控制台、RVM 和 readline 的问题

我应该如何在哈希上使用 each_with_object?

Ruby - time.now UTC

在ruby中将字符串转换为十进制数

Ruby 中的 to_s 与 to_str(以及 to_i/to_a/to_h 与 to_int/to_ary/to_hash)

Ruby 中的 each 和 collect 方法有什么不同

Ruby:如何计算一个字符串在另一个字符串中出现的次数?