ฉันต้องการทดสอบว่าคลาสสืบทอดจากคลาสอื่นหรือไม่ แต่ดูเหมือนว่าจะไม่มีวิธีสำหรับสิ่งนั้น
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
แต่ฉันคาดหวังว่าสิ่งนี้จะมีอยู่แล้ว
แล้ว
—
akostadinov
kind_of?
kind_of?
ทดสอบว่าวัตถุเป็นตัวอย่างของคลาสหรือไม่ ไม่ใช่ว่าวัตถุนั้นสืบทอดมาจากคลาสหรือไม่
kind_of?
เป็นนามแฝงของis_a?
A.class #=> Class
. นี่คือเหตุผลที่B.is_a? A
ผลตอบแทนที่ผิดพลาด