lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Sat, Jan 5, 2013 at 11:07 AM, Marc Balmer <marc@msys.ch> wrote:
> Is it possible to change the order of parameters in a function taking varargs?  Maybe using the select(n, ...) function?
>
> This is what I want to do:
>
> function foo(fmt, ...)
>     -- switch element 1 and 2 of {...}
>
>    print(string.format('%d %s', ...))
> end
>
>
> foo('%s %d', 42, 'balmer')
>
> (background is doing i18n in Lua, whith messages (= format strings) that can have the order of parameters changed)
>
>

You can probably hack up something to rearrange parameters, but a much
better idea for i18n is string.gsub:

function foo(fmt, ...)
	local values = {...}
	print(('$2 $1'):gsub('%$(%d+)', values))
end

That doesn't handle format strings, but you could easily extend it to
a syntax like $(1.6f 3) to mean the third key formatted with %1.6f.

-- 
Sent from my Game Boy.