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

Splatted ! Works - Thanks Fred !

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

Fred

Hi –

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

=> [“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