MyFunnyDev

web, coding and beyond

class variables, class instance variables and instance variables in ruby

with one comment

This was covered multiple times already. I’ve created this little snippet to remember the difference between different types of variables in ruby:

class A
  @@foo = "class variable of the class A"
  @foo = "class instance variable of the class A"
 
  def instance_method
   @foo = "instance variable of the class A"
  end
 
  def self.class_method1
    # class variables are visible to and shared by the instance and class methods
    @@foo
  end
 
  def self.class_method2
    # class instance variables are visible to and shared by the class methods
    @foo
  end	
end
 
p A.new.instance_method # instance variable of the class A
p A.class_method1 # class variable of the class A
p A.class_method2 # class instance variable of the class A
 
class B < A
  @@foo = "class variable of the class B"
  @foo = "class instance variable of the class B"
end
 
p B.class_method1 # class variable in B
# class variable in A is overwritten by one in B !!!
p A.class_method1 # class variable in B
 
p B.class_method2 # class instance variable of the class B
# class instance variable in A is NOT overwritten by one in B !!!
p A.class_method2 # class instance variable of the class A

Written by MichaƂ Kuklis

January 13th, 2010 at 1:03 am

Posted in Ruby

One Response to 'class variables, class instance variables and instance variables in ruby'

Subscribe to comments with RSS or TrackBack to 'class variables, class instance variables and instance variables in ruby'.

  1. Nice examples..

    Arun

    23 Feb 10 at 2:12 am

Leave a Reply