Apple < ActiveRecord:Base
Orange < ActiveRecord:Base
piece_of_fruit = Apple.new
我想知道piece_of_fruit
是Apple
还是Orange
- ,即使两者都来自ActiveRecord:Base
< / em>的
是否有一个反射方法会告诉我继承树中的下一个类(Apple / Orange)。
如果我想在继承层次结构中查看每个后续步骤,那么从ActiveRecord开始:在这种情况下是Base吗?
答案 0 :(得分:2)
怎么样
piece_of_fruit.kind_of?(Apple)
答案 1 :(得分:2)
正如其他人发布的那样,您的第一个问题的答案是
piece_of_fruit.is_a? Apple
第二个问题(“如果我想查看继承层次结构中的每个连续步骤怎么办?”)的答案是使用class
和superclass
方法。
piece_of_fruit.class
=> Apple
piece_of_fruit.class.superclass
=> ActiveRecord::Base
答案 2 :(得分:0)
is_a
和kind_of
是同义词,因此您可以编写以下任一内容:
piece_of_fruit.is_a?(Apple)
或
piece_of_fruit.kind_of?(Apple)