Method: Object#is_a?
- Defined in:
- object.c
#is_a? ⇒ Boolean #kind_of? ⇒ Boolean
Returns true if class is the class of obj, or if class is one of the superclasses of obj or modules included in obj.
module M; end
class A
include M
end
class B < A; end
class C < B; end
b = B.new
b.is_a? A #=> true
b.is_a? B #=> true
b.is_a? C #=> false
b.is_a? M #=> true
b.kind_of? A #=> true
b.kind_of? B #=> true
b.kind_of? C #=> false
b.kind_of? M #=> true
641 642 643 644 645 646 647 648 649 650 651 652 653 654 |
# File 'object.c', line 641
VALUE
rb_obj_is_kind_of(VALUE obj, VALUE c)
{
VALUE cl = CLASS_OF(obj);
c = class_or_module_required(c);
c = RCLASS_ORIGIN(c);
while (cl) {
if (cl == c || RCLASS_M_TBL_WRAPPER(cl) == RCLASS_M_TBL_WRAPPER(c))
return Qtrue;
cl = RCLASS_SUPER(cl);
}
return Qfalse;
}
|