読者です 読者をやめる 読者になる 読者になる

Ruby の BasicObject を利用したい場面

Ruby の BasicObject を利用したい場面ですが、公式では Proxy パターンを例にだしています。

class Proxy < BasicObject
    def initialize target
        @target = target
    end

    def method_missing name, *args
        @target.__send__ name, *args
    end
end

proxy = Proxy.new 1

# method_missing 経由で 1.class が呼ばれる
proxy.class
# => Fixnum
proxy + 2
# => 3

ちなみに以前作った iolite でも同じように BasicObject を利用しています。