[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002334] Re: method name
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:002334] Re: method name
- From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx>
- Date: Tue, 21 Jun 2005 10:08:38 +0900
堀之内です.
> ruby 教えて下さい. メソッド名をコマンドラインから指定して
> 処理させるようなこと, そもそも ruby でできるんでしょうか.
>
> 考えていることは, とある gphys data の log や abs をとりたいとき,
> スクリプト中で
>
> gphys = gphys.log10
>
> 等とすればいいことはわかるのですが, この log10 の部分を
> 一般化して, たとえばコマンドラインからの引数として別のもの
> (たとえば abs とか)を指定してoperation をさせることはできるのか?
> ということです.
eval を使えば簡単にできます.
サンプル1:
method = "abs"
eval("gphys = gphys.#{method}")
サンプル2:
より ruby のコードらしく書こうと思うとヒアドキュメントを使うとい
いです.特に複数行にわたるコードの eval に便利.
# することは1と同じで,書き方が違うだけ
method = 'abs'
eval <<EOS
gp2 = gphys.#{method}
EOS
サンプル3:
終了合図(ここではEOS)の前にスペースを入れる場合は << でなく,
<<- を使います:
method = 'abs'
eval <<-EOS
gp2 = gphys.#{method}
EOS
恐らくサンプル3方式が一番見やすく書けるでしょう.