在Ruby中可以使用Open Class的方法给已有的类添加新的方法,这样可以方便我们扩展新的功能。如rails这样popular的framework都会有core_ext用来添加ruby本身库的功能。虽然可能会出现Monkey Patch的问题,但这样仍然很好的丰富了我们写程序的手法。考虑一个String类,如果我的业务逻辑是经常会取出String对象的第一个字符并且返回大写形式。我就可以打开String类。直接添加一个这样的方法就行。如下:
class String
def capital
self[0].to_s.upcase
end
end
puts "kiwi".capital
如果是javascript可以用prototype完成。即在prototype中添加一个新的方法
String.prototype.capital = function() {
return this[0].toString().toUpperCase();
}
console.log("kiwi".capital());
如果没有这样的方法,我们可能就会可能会需要继承String类型,然后取名为CapitalString。或者说,提供一个Util之类的东西,capital( string)这样来完成。但是这样怎么看都不够直接,不够表意。