# Class method

**URL:** <https://www.ruby-forum.com/t/class-method/80214>\
**Category:** Ruby\
**Created:** [December 22, 2006, 11:21am UTC](https://www.ruby-forum.com/t/class-method/80214 "2006-12-22T11:21:02Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![spitfire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a5b964/32.png) [@spitfire](https://www.ruby-forum.com/u/spitfire)\
**Post date:** [December 22, 2006, 11:21am UTC](https://www.ruby-forum.com/t/class-method/80214/1 "2006-12-22T11:21:02Z")

</div>

One thing that I don’t understand is the following code.

```
sample = [1,2,3]
p sample.class #=> Array
p sample.class.is_a?(Array) #=> false
p sample.class.is_a?(Array.class) #=> true (why???)
```

---

<div class="post-metadata">

**Author:** ![spitfire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a5b964/32.png) [@spitfire](https://www.ruby-forum.com/u/spitfire)\
**Post date:** [December 22, 2006, 11:23am UTC](https://www.ruby-forum.com/t/class-method/80214/2 "2006-12-22T11:23:05Z")

</div>

Spitfire wrote:

> One thing that I don’t understand is the following code.
> 
> ```
> sample = [1,2,3]
> p sample.class #=> Array
> p sample.class.is_a?(Array) #=> false
> p sample.class.is_a?(Array.class) #=> true (why???)
> 
> ```

Hmm, mayvbe because Array.class is Class and sample.class is a Class?

Cheers,  
Peter

\_\_  
[http://www.rubyrailways.com](http://www.rubyrailways.com)

---

<div class="post-metadata">

**Author:** ![spitfire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a5b964/32.png) [@spitfire](https://www.ruby-forum.com/u/spitfire)\
**Post date:** [December 22, 2006, 11:31am UTC](https://www.ruby-forum.com/t/class-method/80214/3 "2006-12-22T11:31:06Z")

</div>

On Dec 22, 2006, at 02:20, Spitfire wrote:

> One thing that I don’t understand is the following code.
> 
> sample = [1,2,3]  
> p sample.class #=\> Array  
> p sample.class.is\_a?(Array) #=\> false  
> p sample.class.is\_a?(Array.class) #=\> true (why???)

$ ruby  
sample = [1, 2, 3]  
p sample.class  
p Array.class  
p sample.class.is\_a?(Array.class)  
Array  
Class  
true

therefore:

$ ruby  
p Array.is\_a?(Class)  
true

Sensible.

–  
Eric H. - removed\_email\_address@domain.invalid - [http://blog.segment7.net](http://blog.segment7.net)

I LIT YOUR GEM ON FIRE!

---

<div class="post-metadata">

**Author:** ![spitfire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a5b964/32.png) [@spitfire](https://www.ruby-forum.com/u/spitfire)\
**Post date:** [December 22, 2006, 11:31am UTC](https://www.ruby-forum.com/t/class-method/80214/4 "2006-12-22T11:31:06Z")

</div>

Spitfire schrieb:

> One thing that I don’t understand is the following code.
> 
> ```
> sample = [1,2,3]
> p sample.class #=> Array
> p sample.class.is_a?(Array) #=> false
> p sample.class.is_a?(Array.class) #=> true (why???)
> 
> ```

sample = [1,2,3]  
p sample.class #=\> Array  
p sample.is\_a?(Array) #=\> true

---

<div class="post-metadata">

**Author:** ![spitfire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a5b964/32.png) [@spitfire](https://www.ruby-forum.com/u/spitfire)\
**Post date:** [December 22, 2006, 11:37am UTC](https://www.ruby-forum.com/t/class-method/80214/5 "2006-12-22T11:37:07Z")

</div>

Gregor K. schrieb:

> sample = [1,2,3]  
> p sample.class #=\> Array  
> p sample.is\_a?(Array) #=\> true

isa? makes checks with .class in the Background automagically.

---

<div class="post-metadata">

**Author:** ![spitfire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/a5b964/32.png) [@spitfire](https://www.ruby-forum.com/u/spitfire)\
**Post date:** [December 22, 2006, 11:39am UTC](https://www.ruby-forum.com/t/class-method/80214/6 "2006-12-22T11:39:08Z")

</div>

> ```
> sample = [1,2,3]
> p sample.class #=> Array
> p sample.class.is_a?(Array) #=> false
> 
> ```

Sure. sample.class is Array and Array.class is Class.  
Sample.class.is\_a? (Array) means mostly the same as “is the class of  
sample.class Array?”. Becaue class of the sample.class is Array not  
Class you get false here.

But: sample.is\_a? (Array) #=\> true

> ```
> p sample.class.is_a?(Array.class) #=> true (why???)
> 
> ```

Class is Class.

I guess you need to understand the difference between sample.is\_a? and  
sample.class.is\_a?

Regards,  
Rimantas
