Skip to Content
The Ruby Programming Language
book

The Ruby Programming Language

by David Flanagan, Yukihiro Matsumoto
January 2008
Beginner to intermediate
446 pages
14h 45m
English
O'Reilly Media, Inc.
Content preview from The Ruby Programming Language

Types, Classes, and Modules

The most commonly used reflective methods are those for determining the type of an object—what class it is an instance of and what methods it responds to. We introduced most of these important methods early in this book in Object Class and Object Type. To review:

o.class

Returns the class of an object o.

c.superclass

Returns the superclass of a class c.

o.instance_of? c

Determines whether the object o.class == c.

o.is_a? c

Determines whether o is an instance of c, or of any of its subclasses. If c is a module, this method tests whether o.class (or any of its ancestors) includes the module.

o.kind_of? c

kind_of? is a synonym for is_a?.

c === o

For any class or module c, determines if o.is_a?(c).

o.respond_to? name

Determines whether the object o has a public or protected method with the specified name. Pass true as the second argument to check private methods as well.

Ancestry and Modules

In addition to these methods that you’ve already seen, there are a few related reflective methods for determining the ancestors of a class or module and for determining which modules are included by a class or module. These methods are easy to understand when demonstrated:

module A; end # Empty module module B; include A; end; # Module B includes A class C; include B; end; # Class C includes module B C < B # => true: C includes B B < A # => true: B includes A C < A # => true Fixnum < Integer # => true: all fixnums are integers Integer < Comparable # => true: integers are comparable Integer ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Metaprogramming Ruby 2

Metaprogramming Ruby 2

Paolo Perrotta

Publisher Resources

ISBN: 9780596516178Supplemental ContentErrata Page