2007-10-20
"class instance variable" 和 “class variable”的区别
关键字: ruby syntax- class variables are available in class methods and instance methods, but class instance variable is only available in class methods:
ruby 代码
- class Test
- @@cla_var = 1
- @inst_var = 1
- def self.cla_var
- @@cla_var
- end
- def cla_var
- @@cla_var
- end
- def self.inst_var
- @inst_var
- end
- def inst_var
- #here @inst_var is treated as the instance variable not class instance variable
- @inst_var
- end
- end
- Class variables are shared by children of the class in which they are first defined, but class instance variables not, every child has it's own copy of class instance variable(Rumor has it that ruby1.9 will change this).
ruby 代码
- class Parent
- @@cla_var = 1
- @inst_var = 2
- def self.cla_var
- @@cla_var
- end
- def self.inst_var
- @inst_var
- end
- def self.cla_var=(cla_var)
- @@cla_var = cla_var
- end
- def self.inst_var=(inst_var)
- @inst_var = inst_var
- end
- end
- class Child1 < Parent
- end
- class Child2 < Parent
- end
- #class variables are shared by parent and all the children
- >> Parent.cla_var
- => 1
- >> Child1.cla_var
- => 1
- >> Child2.cla_var
- => 1
- >> Child1.cla_var = 3
- => 3
- >> Parent.cla_var
- => 3
- >> Child2.cla_var
- => 3
- #every children has it's own copy of class instance variables
- >> Parent.inst_var
- => 2
- >> Child1.inst_var
- => nil
- >> Child2.inst_var>> Child1.inst_var = 4
- => 4
- >> Parent.inst_var
- => 2
- >> Child2.inst_var
- => nil
- => nil
- 17:18
- 浏览 (262)
- 评论 (0)
- 分类: rubyonrails
- 相关推荐







评论排行榜