2
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」と呼ばれますか?このプロパティを持つ言語は他にありますか?

4

2 に答える 2

4

そう、これをRubyではオープンクラスと呼んでいます。私の頭の中で、この特性を持つ他の言語には Python と Smalltalk が含まれます。また、クラスがなくても、ECMAScript、Self、Io、および Ioke でプロトタイプ オブジェクトを変更すると、同様の効果があります。

于 2012-04-26T09:29:55.833 に答える
1

Smalltalk でこれを行う方法はいくつかありますが、私は、なぜそれをやりたいと思うのかを尋ね、別の解決策を求める傾向があります。実行時にコードを変更することは、デバッグが困難なコードを作成するためのレシピです。

于 2012-05-01T00:01:09.853 に答える