メタプログラミングRuby的CLOS (2) — #:g1

Posted 2010-12-11 12:49:00 GMT

メタプログラミングRubyで見掛けたものを考えることの2回目

同じコードを何度も書くのが面倒臭いですしおすし

こういう場合は、CLの場合、クラスは関係なしで、そのものずばりマクロかなと思いました。
(macrolet ((define-component (name)
             `(let ((info ...)
                   (price ...))
                (def ...))))
  (define-component mouse)
  (define-component cpu)
  (define-component keyword))
のような。
もっとクラスの情報をクラス定義自体から引き出して動的に生成したい、ということになると構文上での操作ではなく、クラスオブジェクトの操作になってくるんだと思いますが、構文上の操作だけなら、やっぱりマクロが簡単だと思います。

3回目につづく

comments powered by Disqus