Printf statement - "args" as an Array (or something...)

I'm trying to tart up some logged prepared SQL statements like this:

SELECT col FROM table WHERE a =? AND b =?
PARAMS: 1='one', 2='two'

I thought about using a 'printf' like this, first alter the SQL
statement to:

sql="SELECT col FROM table where a='%s' AND b='%s'"

And then do this:

printf(sql,"one","two")

Trouble is I need a variable list as the args: I can't seem to pass in :
["one","two"] - is there an idiom for this ?

Thanks,

John

···

--
Posted via http://www.ruby-forum.com/.

Trouble is I need a variable list as the args: I can't seem to pass in :
["one","two"] - is there an idiom for this ?

Splat it.

txt = "%s -> %s\n"

=> "%s -> %s\n"

args = [ "first", "second" ]

=> ["first", "second"]

printf(txt, *args)

first -> second
=> nil

txt = "%s -> %s -> %s\n"

=> "%s -> %s -> %s\n"

printf(txt, *[ args, "third" ].flatten)

first -> second -> third
=> nil

Fred

···

Le 02 octobre à 11:58, John Pritchard-williams a écrit :
--
I was broken, bent out of shape I was naked in the clothes you made
Lips were dry, throat like rust You gave me shelter
From the heat and the dust There's no more water in the well
No more water in the well (U2, Trip Through Your Wires)

Splatted ! Works - Thanks Fred !

···

--
Posted via http://www.ruby-forum.com/.

Hi --

···

On Thu, 2 Oct 2008, F. Senault wrote:

Le 02 octobre à 11:58, John Pritchard-williams a écrit :

Trouble is I need a variable list as the args: I can't seem to pass in :
["one","two"] - is there an idiom for this ?

Splat it.

txt = "%s -> %s\n"

=> "%s -> %s\n"

args = [ "first", "second" ]

=> ["first", "second"]

printf(txt, *args)

first -> second
=> nil

txt = "%s -> %s -> %s\n"

=> "%s -> %s -> %s\n"

printf(txt, *[ args, "third" ].flatten)

first -> second -> third
=> nil

And in 1.9 you can do:

   [*args, "third"]

David

--
Rails training from David A. Black and Ruby Power and Light:
   Intro to Ruby on Rails January 12-15 Fort Lauderdale, FL
   Advancing with Rails January 19-22 Fort Lauderdale, FL *
   * Co-taught with Patrick Ewing!
See http://www.rubypal.com for details and updates!