2013年4月28日

摘要: 如果希望在一个类中存储一个变量,那么除了【类实例变量】之外,还可以用以@@开头的【类变量】:class C @@v=1end类变量与类实例变量不同,它们可以被子类或类的实例所使用。class D < C def my_method; @@v; endendD.new.my_method #=>1但请注意:类变量有一个缺陷:@@v=1class MyClass @@v=2end@@v #=>2得到这样的结果是因为类变量并不真正属于类,它们属于类体系结构。由于@@v定义于main的上下文,它属于main的类Object,所以也属于Object的后代。MyClass继承自Objec 阅读全文
posted @ 2013-04-28 08:30 巴晓鹏 阅读(100) 评论(0) 推荐(1) 编辑
 
摘要: Ruby解释器假定所有的实例变量都属于当前对象self。在类定义时也是如此(在Ruby中类也是对象):class MyClass @my_var = 1end在类定义的时候,self的角色由类本身担任,因此实例变量@my_var 属于这个类。注意! 类的实例变量不等同于类的对象的实例变量,请看下面的例子:class MyClass @my_var = 1 def self.read; @my_var; end def write; @my_var = 2; end def read; @my_var; endendobj = MyClass.newobj.writeobj.read ... 阅读全文
posted @ 2013-04-28 08:15 巴晓鹏 阅读(203) 评论(0) 推荐(1) 编辑

2013年4月26日

摘要: array = [72,6,57,88,60,42,83,73,48,85]def quick_sort(a) (x=a.pop) ? quick_sort(a.select{|i| i <= x}) + [x] + quick_sort(a.select{|i| i > x}) : [] endp quick_sort(array) ==》[6, 42, 48, 57, 60, 72, 73, 83, 85, 88] 阅读全文
posted @ 2013-04-26 18:30 巴晓鹏 阅读(478) 评论(1) 推荐(2) 编辑