• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ruby 毎回同じ様なreplace文を書くのイヤ)

Rubyで同じ様なreplace文を簡単に書きたい

このQ&Aのポイント
  • Rubyで同じ様なreplace文を簡単に書く方法を教えてください。
  • 質問者はdb.executeメソッドの引数を可変のパラメータとして渡したいと考えています。
  • 具体的には、replaceメソッドにテーブル名とキーの配列、値の配列を渡して、db.executeメソッドのパラメータに展開したいとのことです。

質問者が選んだベストアンサー

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.1

そのまま、可変長引数として取り扱えますよ。 http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fdef.html#method 受ける側のメソッド内で*を外すと、Array扱いになります。 また、Arrayやらといったオブジェクトに*を付けてやると、他のメソッドへバラけたパラメータとして渡すことができます。 http://ideone.com/jbWZX 記載された例で行くと、 (動作チェックはしていません。「v」の扱い方についてだけです) # このように使いたいなら replace('table',%w(a, b, c, d, e, f, g),[va, vb, vc, vd, ve, vf, vg]) # こうします。 def replace(table, k, v) db.execute('replace into ' + table + '(' + k.join(',') + ') values('+ k.collect {'?'}'.join(’,’) +')' , *v) end # このように使いたいなら replace('table',%w(a, b, c, d, e, f, g), va, vb, vc, vd, ve, vf, vg) # こうします。 def replace(table, k, *v) db.execute('replace into ' + table + '(' + k.join(',') + ') values('+ k.collect {'?'}'.join(’,’) +')' , *v) end

kingfruits
質問者

お礼

sholmesさん ご回答ありがとう御座いました。 おかげさまで、上手く出来ました。

関連するQ&A