反思直系祖先的阶级

时间:2009-10-29 21:35:39

标签: ruby inheritance

Apple < ActiveRecord:Base
Orange < ActiveRecord:Base

piece_of_fruit = Apple.new

我想知道piece_of_fruitApple还是Orange - ,即使两者都来自ActiveRecord:Base < / em>的

是否有一个反射方法会告诉我继承树中的下一个类(Apple / Orange)。

如果我想在继承层次结构中查看每个后续步骤,那么从ActiveRecord开始:在这种情况下是Base吗?

3 个答案:

答案 0 :(得分:2)

怎么样

piece_of_fruit.kind_of?(Apple)

答案 1 :(得分:2)

正如其他人发布的那样,您的第一个问题的答案是

piece_of_fruit.is_a? Apple

第二个问题(“如果我想查看继承层次结构中的每个连续步骤怎么办?”)的答案是使用classsuperclass方法。

piece_of_fruit.class 
=> Apple
piece_of_fruit.class.superclass     
=> ActiveRecord::Base

答案 2 :(得分:0)

is_akind_of是同义词,因此您可以编写以下任一内容:

piece_of_fruit.is_a?(Apple)

piece_of_fruit.kind_of?(Apple)