alias

以前、rubyのsuperのことでinstance_methodsを使う方法を教えてもらったんだけども、
http://d.hatena.ne.jp/tkuro/20080628/1214668731
昨日aliasというものを覚えて、これ使えば同じようなことはできるんだ、と知った。

class Parent
   def foo
      puts "parent foo"
   end
   def bar
      puts "parent bar"
   end
end

class Child < Parent
   alias parent_foo foo
   def foo
      puts "child foo"
   end
   def bar
      print "child bar -- and "
      parent_foo
   end
end

Child.new.bar

foo前に親を使う、ということを明示しなきゃいけないし、名前が変わって烈しくダサいし、だけども。
そもそも、何でこんなこと悩み始めたか今頃思い出した。RingArrayを作ったときにデバッグ用に前のも残したいなーと思ったのがきっかけだった。

class RingArray < Array
   alias get [] 

   def [](i)
     super(i % size)
   end
end

むう、とてもバカ。普通でこんなことになるようなバカ設計はしないとは思うけども。。。僕ならやりかねん。