Ruby类变量和类方法
类变量被类的所有对象所共享,它与类方法相关联,对一个给定的类来说,类变量只存在一份拷贝。类变量由两个@符开头,例如@@count。与全局变量和实例变量不同,类变量在使用之前必须被初始化。通常,初始化就是在类定义中的简单赋值。
例如,我们的点唱机可能希望记录每首歌被播放的次数。这个数目可能是Song对象的一个实例变量。当一首歌被播放时,实例中的值增加。但是,假如我们还想要了解下一共播放了多少首歌。通过搜索所有Song对象并累加它们的播放次数,或者冒天下之大不韪使用全局变量来完成统计;或者,让我们使用类变量。
class Song @@plays = 0 def initialize(name.artist,duration) @name = name @artlist = artist @duration = duration @plays = 0 end def play @plays += 1 #same as @plays = @plays +1 @@plays += 1 "This song:#@plays plays.Total #@@plays plays." end end
出于调试的目的,我们还让Song#play 返回一个字符串,其中包括该歌曲被播放的次数,以及所有歌曲播放的总次数。我们可以很容易测试它。
s1 = Song.new("Song1","Artist1",234) #test songs s2 = Song.new("Song2","Artist2",345) s1.play ->"This song:1 plays.Total 1 plays." s2.play ->"This song:1 plays.Total 2 plays." s1.play ->"This song:2 plays.Total 3 plays." s1.play ->"This song:3 plays.Total 4 plays."
类变量对类及其实例都是私有的。如果你想让它们能够被外部世界访问,你需要编写访问方法。这个方法要么是一个实例方法,或者是类方法。
有时,类需要提供不束缚于任何特定对象的方法。我们已经见过一个这样的方法。new方法创建一个新的Song对象,但是new方法本身并不与一个特定的歌曲对象相关联。
song = Song.new(...)
我们会发现类方法遍布于Ruby库中。例如,File类的对象用来表示在底层文件系统中打开的一个文件。不过,File类还提供了几个类方法来操作文件,而它们并未打开文件,因此也没有相应的File对象。如果你想要删除一个文件,你可以调用类方法File.delete,传入文件名作为参数。
File.delete("dommed.txt")
类方法和实例方法是通过它们的定义区别开来的;通过在方法名之前放置类名以及一个句点,来定义类方法
class Example def instance_method #instance method end def Example.class_method #class method end end
相关推荐
Ruby 方法、类 : Ruby 方法、类 ruby-9-method.mp4 ruby-9-method.mp4
Stringex 一些实用的Ruby字符串扩展类
Finishing Moves - 将一些很实用的方法添加至核心Ruby类
7.7单键方法和EIGENCLASS257 7.8方法查找258 7.9常量查找261 第8章反射和元编程265 8.1类型、类和模块266 8.2对字符串和块进行求值268 8.3变量和常量271 8.4方法272 8.5钩子方法277 8.6跟踪279 ...
冰箱提供了一个简单的方法来冻结所有的ruby核心类和模块。 它设计用于生产,以确保没有代码在运行时对核心类或模块进行意外更改。
主要介绍了Ruby类实例变量、类实例方法和类变量、类方法的区别,本文探讨一下他们的定义和基本的使用场景,需要的朋友可以参考下
也附带讲解了可运行于1.9版本的代码,事无巨细且通俗易懂地讲解了编写程序时所需要的变量、常量、方法、类、流程控制等的语法,以及主要类的使用方法和简单的应用,让没有编程经验的读者也能轻松掌握Ruby,...
类与方法是面向对象编程语言中的典型特性,方法的概念与函数基本上相同,只不过类方法会受到类作用域的约束,这里我们就简单来看一下Ruby面向对象编程中类的方法与类的扩展
类/方法的定义 标准库 内部函数 内部变量 内部常数 内部类/模块/异常类 附加库 Ruby变更记录 ruby 1.6 特性 ruby 1.7 特性 ruby 1.8 特性 1.6.8到1.8.0的变更点(总结) ruby 1.9 特性 obsolete 对应...
俗易懂地讲解了编写程序时所需要的变量、 常量、 方法、 类、 流程控制等的语法, 以及主要类的使用方法和简单的应用, 让没有编程经验的读者也能轻松掌 握Ruby, 找到属于自己的快乐编程方式, 做到融会贯通并灵活...
单件方法顾名思义,就是只作用于单个对象的方法,同理单件类就是单件方法所存在的类,规定其作用域,这里我们就来详解Ruby中的单件方法和单件类:
Referral是一个CLI,可帮助您进行Ruby代码库的复杂分析和重构。 它在整个代码中查找,过滤和排序大多数类型的Ruby标识符(例如类,方法和变量)的定义和引用。
本人学习总结的ruby on rails 3.1.0数据库类查询方法,比较全了
1. 什么是Ruby?简要介绍Ruby的特点和主要用途。 2. Ruby中的变量声明和赋值规则是什么?请说明Ruby变量声明和赋值...请说明在Ruby中模块和类的创建方法。 11. 什么是Ruby中的符号(Symbol)?请说明在Ruby中符号的作用
附录:使用Ruby时所需的知识、相关的资讯等,Ruby的mailing-list、网络上的各种资源与其用法,以及安装Ruby的方法。 希望本书的读者,都能从使用Ruby的过程中,找到属于自己的“兴趣”与“乐趣”。
File 表示一个连接到普通文件的 stdio 对象。open 为普通文件返回该类的一个实例。
类与对象:理解Ruby中的类和对象的概念,学习如何定义类、创建对象以及使用对象的属性和方法。 继承与多态:掌握Ruby中的继承机制,了解子类如何继承父类的属性和方法,并实现自己的特定功能。同时,学习多态的...
主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察器保持协调、通过迭代器遍历集合、使用命令模式完成任务、使用适配器填补空隙、使用装饰器改善对象、单例、使用工厂模式挑选正确的类、通过生成...
Ruby 的通用遗传算法是一种非常简单易用的 Ruby 遗传算法: ...拿一个类来进化它并定义适应度、重组和变异方法。 使用种群创建一个 GeneticAlgorithm 对象。 根据需要多次调用进化方法,并查看最佳进化。