Type of class

J

J. mp

Hi
How do I know if a variable is an instace of a given class

I have a method that returns a String or an Array and I have to know
outside if the returned object is and String or an Array.

Is beacuse this :
# File vendor/rails/activerecord/lib/active_record/validations.rb,
line 100
100: def on(attribute)
101: errors = @errors[attribute.to_s]
102: return nil if errors.nil?
103: errors.size == 1 ? errors.first : errors
104: end


How do I know that call on method on returned and array or an string?

Thanks
 
S

Stefano Crocco

Alle domenica 25 febbraio 2007, J. mp ha scritto:
Hi
How do I know if a variable is an instace of a given class

I have a method that returns a String or an Array and I have to now
outside if the returned object is and String or an Array.

Is beacuse this :
# File vendor/rails/activerecord/lib/active_record/validations.rb,
line 100
100: def on(attribute)
101: errors = @errors[attribute.to_s]
102: return nil if errors.nil?
103: errors.size == 1 ? errors.first : errors
104: end


How do I know that call on method on returned and array or an string?

Thanks

The is_a? method tells whether the receiver is an instance of the class passed
as argument or of one of its derived class:

a=[1,2,3]

a.is_a?(Array)
=> true
a.is_a?(String)
=> false

If you need to know whether an object is an instance of exactly a specific
class (not of derived class), you can use the == on the class:

class A
end

class B < A
end

b=B.new
b.is_a?(A)
=> true
b.class==A
=> false
b.class==B
=> true

I hope this helps

Stefano
 
J

J. mp

Stefano said:
Alle domenica 25 febbraio 2007, J. mp ha scritto:
101: errors = @errors[attribute.to_s]
102: return nil if errors.nil?
103: errors.size == 1 ? errors.first : errors
104: end


How do I know that call on method on returned and array or an string?

Thanks

The is_a? method tells whether the receiver is an instance of the class
passed
as argument or of one of its derived class:

a=[1,2,3]

a.is_a?(Array)
=> true
a.is_a?(String)
=> false

If you need to know whether an object is an instance of exactly a
specific
class (not of derived class), you can use the == on the class:

class A
end

class B < A
end

b=B.new
b.is_a?(A)
=> true
b.class==A
=> false
b.class==B
=> true

I hope this helps

Stefano
Thanks Stefano,
Meanwhile I found (before seeing your response) another way, don't know
which one is the best, but also works

a.instance_of? Array

Maybe they are the same methods but one is alias of the other? Or
there's any really difference between them?

Thanks again.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,234
Messages
2,571,180
Members
47,813
Latest member
RustyGary3

Latest Threads

Top