Ruby学习之类2
1.属性的读写控制
class Man def initialize(name,sex) @name = name @age = 16 @sex = sex end # 只读 def get_name return @name end # 只写 def set_age(age) @age = age end # 读写 def get_sex return @sex end def set_sex(sex) @sex = sex end end t = Man.new("Jim","male"); puts t.get_name puts t.get_sex t.set_sex("man") puts t.get_sex t.set_age(22)
通过方法来实现属性的控制
2.还有一种简略的写法
class Man def initialize(name,sex) @name = name @age = 16 @sex = sex end # 只读 def name @name end # 只写 def age=(age)#这里等号不能有空格 @age = age end # 读写 def sex @sex end def sex=(sex) @sex = sex end end t = Man.new("Jim","male") puts t.name puts t.sex t.sex = "man" puts t.sex t.age = 22 puts t.age
结果:
Jim
male
man
因为age是只写的所以不能读取
3.垃圾收集
Ruby实现了自动的内存管理,实现了垃圾收集。
垃圾收集器使用,有三点需要说明。
(1)收集无用的对象内存空间,避免内存泄漏和程序因内存不断膨胀而崩溃。
(2)判断一个对象的内存空间是否能被清空的标准是,该对象不再被程序中任何一个地方所引用。
(3)垃圾收集器线程定时轮询,在系统的内存过低时会启动释放内存。
GC类中的start方法来实现垃圾收集功能。
4.异常处理
(1)基本结构 Ruby使用begin...rescue...end结构来处理异常。类似于try...catch...finally。
案例:
s = 1 begin s = 1/0 puts s rescue puts "error!" end
结果:error!因为有错误捕捉到。
(2)重试语句
在捕捉到错误之后,可以通过retry语句重新执行begin块中的内容。
案例:
s = 1 begin s = 1/0 puts s rescue puts "error!" retry end
如果有错误,会一直报错下去
(3)抛出异常
Ruby中使用raise语句抛出异常,类似于Java中的throw。异常信息可以被全局变量$!获取
begin raise "test" rescue puts "error!"+$! # retry end
结果:
error!test
(4)结束清理
Ruby中使用ensure语句来实现语句块的最后清理。不论语句块中是否出现异常,
ensure块都将执行。
s = 1 begin s = 1/0 rescue puts "error!"+$! # retry ensure puts "finished!" end puts "------------" s = 1 begin s = 1/2 rescue puts "error!"+$! # retry ensure puts "finished!" end
结果:
error!divided by 0
finished!
-----------
finished!
小结:
Ruby中的类使用跟java大同小异了