Skip to content

Instantly share code, notes, and snippets.

@mcrmfc
Created April 29, 2012 22:09
Show Gist options
  • Save mcrmfc/2553496 to your computer and use it in GitHub Desktop.
Save mcrmfc/2553496 to your computer and use it in GitHub Desktop.
variables in ruby
class A
@@class_var = 'aclassvar'
@class_instance_var = 'aclassinstancevar'
def initialize
@instance_var = 'ainstance_var'
end
def A.class_method
puts "value of @@class_var: #{@@class_var}"
puts "value of @class_instance_var: #{@class_instance_var}"
puts "value of @instance_var: #{@instance_var}"
end
def a_method
puts "value of @@class_var: #{@@class_var}"
puts "value of @class_instance_var: #{@class_instance_var}"
puts "value of @instance_var: #{@instance_var}"
end
end
puts "\n\nNo instances of A - call class_method...\n\n"
A.class_method
a = A.new
puts "\n\n1 instancesof A - call a_method...\n\n"
a.a_method
class B < A
@@class_var = 'bclassvar'
@class_instance_var = 'bclassinstancevar'
def initialize
@instance_var = 'binstance_var'
end
def B.class_method
puts "value of @@class_var: #{@@class_var}"
puts "value of @class_instance_var: #{@class_instance_var}"
puts "value of @instance_var: #{@instance_var}"
end
def b_method
puts "value of @@class_var: #{@@class_var}"
puts "value of @class_instance_var: #{@class_instance_var}"
puts "value of @instance_var: #{@instance_var}"
end
end
puts "\n\nNo instances of B - call class_method..\n\n."
B.class_method
b = B.new
puts "\n\n1 instancesof B - call b_method...\n\n"
b.b_method
puts "\n\nCalling A.class_method again, see how the class variable is shared accross the inheritance heirachy but the class instance variable is truly static per class...\n\n"
A.class_method
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment