« Centos6でgemパッケージを作ってrubygems.orgで公開してみた | トップページ | 購入したDVDをHDDに入れてREGZAで見る手順 »

2013年1月12日 (土)

クラスメソッドをインスタンスメソッドから呼び出す黒魔術

Rubyでインスタンスメソッドからクラスメソッドを呼び出す時、

<クラス名>.<クラスメソッド名>
と書かなければなりません。
Rubyistの方には当たり前なのだと思うのですが、C++で育った自分としては、
「クラスメソッドは身内なんだし、わざわざレシーバを言わなくても解ってよ!」
って思いが強く、【なんとかならんのか?】と思って検索してみたところ、
が出てきた。
回答は「self.class.<クラスメソッド名> でいいんじゃね?」って事で、自分的には【なんかちがうね】【普通に書こう】って思ってた。

ところが今週、Yuguiさんの『初めてのRuby(電子版)』を電車の中で読み返していてはっとしました。そうだ、Rubyには黒魔術があるじゃないか!

class Hoge
   def method_missing(action, *args)
        self.class.__send__ action, *args
    end
    def Hoge.say(message)
        puts message
    end
    def hello
        say "Hello!"
    end
end
obj = Hoge.new
obj.hello
これで良さげ。
だけど、黒魔術はコードが理解しづらくなるから要注意ってことで。

|

« Centos6でgemパッケージを作ってrubygems.orgで公開してみた | トップページ | 購入したDVDをHDDに入れてREGZAで見る手順 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: クラスメソッドをインスタンスメソッドから呼び出す黒魔術:

« Centos6でgemパッケージを作ってrubygems.orgで公開してみた | トップページ | 購入したDVDをHDDに入れてREGZAで見る手順 »