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大同小异了

posted @ 2013-03-28 00:19  TBHacker  阅读(218)  评论(0编辑  收藏  举报