From: Hideaki Takata Date: 2002-09-26T19:11:06+09:00 Subject: [ruby-list:36011] 文字列<−> Proc オブジェクト 高田と申します。 このML、ROMですが、いつも読ませていただいて、勉強させていただいております。 ひとつ質問させてください。 現在、ちょっとしたライブラリを作っているのですが、題名のような操作をしたく て、 方法を考えているのですが、思いつかなくて困っています。 あるブロックの内容をそのまま文字列などのデータとして得たり(つまりevalの逆演 算)、 逆に、文字列から Procオブジェクトに変換したりしたいのです。 イメージとしては、Lispのリストを関数にしたり、その逆をしたりというような操作 をしたい のですが。 それを使って何をしたいのかというと、オブジェクトに数式(String)を与えて計算 させたり、ブロックを与えて、数式(String)の形で取り出したりということをした いのです。 つまり、以下のような動作をするオブジェクトをつくりたい。 # convはどこかで適当に作られているとする conv.equation_as_string=("ans = x1+x2") conv.equation_as_string -> "ans=x+y" conv.param=({"x1"=>1,"x2"=>2}) conv.ans -> 3 conv.equation_as_block={|x,y|y*(x+5)} # equationが更新される conv.ans -> 12 conv.equation_as_string -> "ans=x2*(x1+5)"