三、流程控制
1、条件控制
if 条件表达式 operation1 elsif operation2 else operation3 end
unless 条件表达式 operation2 else operation1 end 与if流程相反
2、分支控制
case 表达式 when 值1,值2 operation1 when 值3,值4 operation else operation3 end
3、循环控制
while 条件表达式 operation end
until 条件表达式 operation end
for 循环变量 in 数组对象 operation end
for 循环变量 in 区间对象 operation end
注意:其中break控制退出,next=continue,retry重新迭代
相关代码:条件控制示例
四、Ruby面向对象
1、定义类
通过class关键字,并且遵循惯例,比如class Myclass
类的继承Myclass<Class<Module<Object
定义类没有构造函数,直接通过new方法实例化对象
2、定义方法、属性
方法定义:通过def关键字,可以通过Myclass.method、self.method方式声明为类方法
属性定义:通过attr[attr_reader|attr_writer|attr_accessor]: atrr1,或者通过方法定义def attr2 @attr2 end
方法与属性可以通过public private protected修饰
相关代码:Myclass类定义
3、类变量
通过方法定义def attr @@attr end,可以在类中初始化@@attr = value。
相关代码:类变量定义
4、扩展与继承
扩展:即将已有的类继续扩展,包括扩展新的实例方法,类方法,覆盖旧的方法
相关代码:扩展Fixnum
继承:定义另一个类的时候使用 < 继承已有的类
相关代码:继承一个类
5、通过别名达到多态的效果
当用alias 新的名字 旧的名字时,新的名字作为旧的名字的备份,当旧的名字被覆盖时,新的名字仍然保留原有的功能
相关代码:alias别名的使用
6、复制与对象的冻洁
复制:拥有一个对象的副本,通过Object的方法dup、clone进行一个浅复制,通过Marshal的方法dup_var = dump(obj)、load(dup_var)序列化进行深复制
冻洁:指冻洁对象的修改,通过方法freeze
相关代码:对象的复制与冻洁