ruby で abstract なソレを書く方法
社内勉強会で GoF が流行っていたり。次だかその次だかで若者が Ruby で GoF なソレを云々なさるらしいのですが、Ruby で抽象表現ってどうやるんだよ、って後天性記憶不全な爺さんがツッコんでしまいましたがスルー。
仕方が無いので確認してみました。
抽象メソドは raise で
以下な書き方して継承した側で実装を強制、というナニ。
class Hoge def fuga reise 'Called abstract method ...' end end class Hogehoge < Hoge def fuga puts 'hogehoge#fuga()' end end
lambda 使う方法もある模様
上記な形だと以下な書き方になるのか。
class Hoge def initialize(&out) @out = out end def fuga @out.call end end STDOUT_OUT = lambda do puts "hogehoge#fuga()" end piyo = new Hoge(&STDOUT_OUT) piyo.fuga
実行までしちゃってますが、心配だったので (ぇ
しかし lambda が使えるとか Ruby すばらですな。