首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

ruby_种的实例变量和对象的实例变量

2012-11-04 
ruby_类的实例变量和对象的实例变量ruby_类的实例变量和对象的实例变量?Ruby中,类除了类变量@@x、实例变量@

ruby_类的实例变量和对象的实例变量

ruby_类的实例变量和对象的实例变量

?

Ruby中,类除了类变量@@x、实例变量@x,还有一个类的实例变量@x的概念,而且类的实例变量和对象的实例变量可以重名。

类变量@@x

实例变量@x,供给对象使用

类的实例变量@x,供给类使用

?

怎么理解呢?

要理解Ruby的核心之一:类本身也是一个实例,比如下面例子的Test类,Test本身是Class类的一个对象。

这样也就可以理解,类这个实例也可以有方法,这与对象的实例方法是不同的。

?

看例子:

#NOTICE: 可以重名class Test  @@y = 100  def getY    @@y  end  def setY(y)    @@y = y  end  def self.getY    @@y  end  def self.setY(y)    @@y = y  end  #object的实例变量  attr_accessor :cls_var #NOTICE: 可以重名  def initialize    @cls_var = 0  end  def increate    @cls_var += 1  end  #class的实例变量  class<<self    attr_accessor :cls_var #NOTICE: 可以重名  end  def self.increate    @cls_var ||= 0    @cls_var += 1  endendputs Test.cls_varTest.increateputs Test.cls_varTest.increateputs Test.cls_varputs "----------------------------"t1 = Test.newputs t1.cls_vart1.increateputs t1.cls_varputs "----------------------------"puts t1.getYt1.setY(200)puts t1.getYputs "----------------------------"puts Test.getYTest.setY(300)puts Test.getYputs t1.getY
?

输出:

nil
1
2
----------------------------
0
1
----------------------------
100
200
----------------------------
200
300
300

?

PP

PP

PP

--

PP

PP

PP

?

?

?

?

?

?

热点排行