class Dotnet
def vb
puts "vb"
end
end
a=Dotnet.new
a.vb # vb定义了,vb出现的时候,根本就没有csharp
class Dotnet
def csharp
puts "csharp"
end
end
a.csharp #csharp定义了
a.vb #vb依然存在
class Dotnet
remove_method :vb
end
a.vb #vb已经被微软抛弃了(或许用qbasic比喻更恰当一点)
上面的过程是:打开一个已经存在的类,添加一个方法,最后删除掉不再需要的方法.
这个例子是ruby这个动态语言能够适应或者描述变化的一个例子.
现实世界是开放而动态变化的.ruby对此能够很好的描述这样的现实.
rails就利用了"开放的类"这个特点:您定义的类是开放的类,因此rails能够往你的类里面添加新的方法(根据你的需要)