かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

eval

久しく触ってなかったRuby
ちょっとした事情で触ることに。



evalを使ってみました。文字列でrubyのプログラムを渡してやれば実行してくれる代物っぽい?
試しに

eval "puts \"Hello world\""

と書いて実行するとHello worldが出た。
ふむ


attr_accessorみたいなのを作るには

class MyBase
    def my_acessor name
        eval <<-E
            def #{name}()
                return @#{name}
            end
            def #{name}= param
                @#{name} = param
            end
        E
    end
end

a = MyBase.new
a.my_acessor "hoge"

a.hoge = 100;
puts a.hoge

こうすればいいのかぁ?
あってるのかは謎だけど似たような動きはしてるっぽい