Rubyの特異クラスをフラットスコープで開く方法


悩んだのでメモしておきます。

obj の特異クラスをフラットスコープで開くには、次のように書けばよいです。

(class << obj; self; end).class_eval do

end

また、以下の様に「メタプログラミングRuby」に載っている eigenclass メソッドを定義しておくと

class Object
    def eigenclass
        class << self; self; end
    end
end

次の様に、より綺麗に記述することができます。

obj.eigenclass.class_eval do

end

[amazon asin="4048687158" /]

カテゴリー: 覚書, 記事 タグ: パーマリンク

コメントを残す