这个ruby属性叫做“Open Class”吗?还有其他语言有这个属性吗?

时间:2012-04-26 08:14:15

标签: ruby

class A
    def p
        puts "1"
    end
end

a = A.new
a.p   #=> "1"

class A
    def p
        puts "2"
    end
end

a.p   #=>"2"

这个ruby属性是否称为“Open Class”?还有其他语言有这个属性吗?

2 个答案:

答案 0 :(得分:4)

是的,这在Ruby中称为 open class 。在我的脑海中,其他具有此属性的语言包括Python和Smalltalk。此外,即使他们没有类,在ECMAScript中改变原型对象,Self,Io和Ioke也会产生类似的效果。

答案 1 :(得分:1)

虽然有很多方法可以在Smalltalk中做到这一点,但我倾向于问你为什么要这样做并推动一个不同的解决方案。在运行时更改代码是使代码难以调试的一种方法。