Mooseっぽい柔軟なアクセサ

最近perl界隈で話題のMooseをちょくちょく弄ってみたりしているのですが、宣言的なアクセサは見通しも良くなるし、なかなか良いなと思ったんでRubyでもそれっぽく動作するやつを書いてみました。

Mooseっぽくコンストラクタも勝手に用意するようにしてみたのですが、これは好みが分かれるところのような気もするので、アクセサの部分は分離しても良いかなと思いました。ただ、あらかじめコンストラクタで引数を固定しておくとあとから拡張したいときや、デフォルトでは必要ないのだけど、テストのときとか書き換えてやりたいときにめんどくさかったりするのでHashを渡せばいいという割り切り方はなかなか良いなと思います。

とりあえずネタで書いてみたという程度なので、エラーメッセージなどは例によって今のところてきとうです。あと黒魔術はもっと減らせる気がしますw

いろいろなDSLをつかってるものとバッティングしそうな感じですが(汗

  class Point < ClassX
    has :x, :is => :ro, :kind_of => Fixnum, :default => 10
    has :y, :required => true
    has :hoge, :default => proc { "Hoge" }
  end

  Point.new
end

追記:

なんとなくGithubの方に入れてみました。
http://github.com/walf443/classx/tree/master