memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

Ruby練習

配列にメソッドを登録して、順次評価するようなプログラムが作りたく。。。書籍やリファレンスマニュアルなど見て試行錯誤しました。どうやら、以下でいけるらしい。これが本式なのかわからないけど、結果的に関数ポインタ的な使い方になりました。

def rule1() "rule1 called" end
def rule2() "rule2 called" end
def rule3() "rule3 called" end

rules = [:rule1, :rule2, :rule3]

rules.each {|r| p Object.new.send(r)}


ちなみに、rule1〜3は何をやらせようとしているのかといいますと。。。Rubyを内部DSLとして利用しようということで、外部ファイルにruleを1つずつrubyで定義し、そのファイルを読み込みevalで取り込みます。各ruleの発火可能性をまとめてチェックするのにsendを利用するのが良さそう。。。ということです。

参考:Rubyリファレンスマニュアル