ruby 元编程 2 打开类
class Array def replace from,to each_with_index do |e,i| self[i]=to if e==from end endendrequire 'test/unit'class Test_replace < Test::Unit::TestCase def test_replace books = ['html5','java','css'] books.replace 'java','ruby' assert_equal books,['html5','ruby','css'] endend
?此时,如果程序中其他的地方用到了Array原有replace的地方,那么那个地方的测试会出错。这就是打开类的隐患,我们称之为猴子补丁。