ক্লাসে ইনস্ট্যান্স ভেরিয়েবল:
class Parent
@things = []
def self.things
@things
end
def things
self.class.things
end
end
class Child < Parent
@things = []
end
Parent.things << :car
Child.things << :doll
mom = Parent.new
dad = Parent.new
p Parent.things #=> [:car]
p Child.things #=> [:doll]
p mom.things #=> [:car]
p dad.things #=> [:car]
শ্রেণি পরিবর্তনশীল:
class Parent
@@things = []
def self.things
@@things
end
def things
@@things
end
end
class Child < Parent
end
Parent.things << :car
Child.things << :doll
p Parent.things #=> [:car,:doll]
p Child.things #=> [:car,:doll]
mom = Parent.new
dad = Parent.new
son1 = Child.new
son2 = Child.new
daughter = Child.new
[ mom, dad, son1, son2, daughter ].each{ |person| p person.things }
#=> [:car, :doll]
#=> [:car, :doll]
#=> [:car, :doll]
#=> [:car, :doll]
#=> [:car, :doll]
ক্লাসে উদাহরণস্বরূপ ভেরিয়েবলের সাথে (সেই শ্রেণীর উদাহরণ নয়) আপনি সাব-ক্লাস না করে সে শ্রেণিতে সাধারণ কিছু সঞ্চয় করতে পারেন স্বয়ংক্রিয়ভাবে সেগুলিও পেয়ে যায় (এবং তদ্বিপরীত)। ক্লাস ভেরিয়েবলের সাথে, আপনার self.class
কোনও ইনস্ট্যান্স অবজেক্ট থেকে না লেখার সুবিধা রয়েছে এবং (যখন পছন্দসই হয়) আপনি ক্লাস শ্রেণিবদ্ধ জুড়ে স্বয়ংক্রিয়ভাবে ভাগ করে নেবেন।
এগুলি একক উদাহরণে একত্রিত করা উদাহরণস্বরূপ উদাহরণসমূহের ভেরিয়েবলগুলিও কভার করে:
class Parent
@@family_things = [] # Shared between class and subclasses
@shared_things = [] # Specific to this class
def self.family_things
@@family_things
end
def self.shared_things
@shared_things
end
attr_accessor :my_things
def initialize
@my_things = [] # Just for me
end
def family_things
self.class.family_things
end
def shared_things
self.class.shared_things
end
end
class Child < Parent
@shared_things = []
end
এবং তারপরে কর্মে:
mama = Parent.new
papa = Parent.new
joey = Child.new
suzy = Child.new
Parent.family_things << :house
papa.family_things << :vacuum
mama.shared_things << :car
papa.shared_things << :blender
papa.my_things << :quadcopter
joey.my_things << :bike
suzy.my_things << :doll
joey.shared_things << :puzzle
suzy.shared_things << :blocks
p Parent.family_things #=> [:house, :vacuum]
p Child.family_things #=> [:house, :vacuum]
p papa.family_things #=> [:house, :vacuum]
p mama.family_things #=> [:house, :vacuum]
p joey.family_things #=> [:house, :vacuum]
p suzy.family_things #=> [:house, :vacuum]
p Parent.shared_things #=> [:car, :blender]
p papa.shared_things #=> [:car, :blender]
p mama.shared_things #=> [:car, :blender]
p Child.shared_things #=> [:puzzle, :blocks]
p joey.shared_things #=> [:puzzle, :blocks]
p suzy.shared_things #=> [:puzzle, :blocks]
p papa.my_things #=> [:quadcopter]
p mama.my_things #=> []
p joey.my_things #=> [:bike]
p suzy.my_things #=> [:doll]