Ruby支持单继承。然而,它还提供了mixin-它提供了多继承的许多特征。一个mixin是一种"模块"类型。为此,你必须首先理解在Ruby中模块的含义。
module FormulasACCELERATION = 9.8
LIGHTSPEED = 299792458
def energy (mass)
mass*(LIGHTSPEED**2)
end
def force (mass)
mass*ACCELERATION
end
end
现在,这些公式方法和常数可以被任何数目的其它类或其自身所使用:
irb(main):046:0> Formulas.force(10)=> 98.0
irb(main):047:0≫ Formulas::ACCELERATION
=≫ 9.8 class Rectangle
include Formulas
end
现在,Rectangle的实例具有了它们可以使用的force和energy方法,并且Rectangle类能够访问常数ACCELERATION和LIGHTSPEED:
irb(main):044:0> class Rectangleirb(main):045:1> include Formulas
irb(main):046:1> end
=> Rectangle
irb(main):047:0> Rectangle.new(4,5).force(10)
=> 98.0
irb(main):048:0> Rectangle::LIGHTSPEED
=> 299792458
这意味着,mixin给Ruby中的类带来了许多多重继承的优点,却避开了多重继承中存在的问题。
ifarea > 100"big"
else
"small"
end
case height
| when 1
| print "stubby\n"
| when 2..10 #高度范围为2~10
| print "short\n"
| when 10..20 #高度范围为2~10
| print "tall\n"
| end
aRect = Rectangle.new(4,6)
while aRect.area < 100 and aRect.height < 10
aRect.doubleSize()
end
for element in [2, 9.8, "some string", Math::PI] #遍历对象集合
print "The type is: " + element.type.to_s + "\n&"
end begin
#实现一些事情
rescue
##处理错误
ensure
#做一些清理工作,如关闭一个打开的文件等
end
为了在你的代码中引发一个异常,你只需要简单地调用raise方法:
if area < 0raise
else if area > 0 and area < 10
raise "Rectangle too small"
else if area > 100
raise TooBigException "Rectangle too big"
end