programing

Ruby 클래스가 다른 클래스의 하위 클래스인지 테스트

sourcejob 2023. 6. 8. 19:38
반응형

Ruby 클래스가 다른 클래스의 하위 클래스인지 테스트

저는 한 클래스가 다른 클래스에서 상속되는지 테스트하고 싶지만, 그것을 위한 방법이 없는 것 같습니다.

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

사용 가능:

B.ancestors.include? A

이것은 의 (짧은) 대답과 약간 다릅니다.B < A왜냐면B에 포함됨B.ancestors:

B.ancestors
#=> [B, A, Object, Kernel, BasicObject]

B < B
#=> false

B.ancestors.include? B
#=> true

이 방법이 바람직한지 여부는 사용 사례에 따라 달라집니다.

언급URL : https://stackoverflow.com/questions/4545518/test-whether-a-ruby-class-is-a-subclass-of-another-class

반응형