writeln = function(...)
for i, v in pairs({ ... }) do
if type(v) == "table" then
local t = v
if #v == 0 then
t = {}
for k, v in pairs(v) do
table.insert(t, k .. ": " .. v)
end
end
io.write("[ " .. table.concat(t, ", ") .. " ]")
else
io.write(v)
end
end
io.write("\n")
end
foo = function(...)
print("Called foo ...")
for i, arg in pairs({ ... }) do
writeln(" args[", i, "] == ", arg)
end
print("... foo end")
end
local tup = { 5, 3.14, "hello world", { 5, 10, 15 }, { foo = 5, bar = 10 } }
foo(unpack(tup))
d3JpdGVsbiA9IGZ1bmN0aW9uKC4uLikKICAgIGZvciBpLCB2IGluIHBhaXJzKHsgLi4uIH0pIGRvCiAgICAgICAgaWYgdHlwZSh2KSA9PSAidGFibGUiIHRoZW4KICAgICAgICAgICAgbG9jYWwgdCA9IHYKICAgICAgICAgICAgaWYgI3YgPT0gMCB0aGVuCiAgICAgICAgICAgICAgICB0ID0ge30KICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHBhaXJzKHYpIGRvCiAgICAgICAgICAgICAgICAgICAgdGFibGUuaW5zZXJ0KHQsIGsgLi4gIjogIiAuLiB2KQogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVuZAogICAgICAgICAgICBpby53cml0ZSgiWyAiIC4uIHRhYmxlLmNvbmNhdCh0LCAiLCAiKSAuLiAiIF0iKQogICAgICAgIGVsc2UKICAgICAgICAgICAgaW8ud3JpdGUodikKICAgICAgICBlbmQKICAgIGVuZAogICAgaW8ud3JpdGUoIlxuIikKZW5kCgpmb28gPSBmdW5jdGlvbiguLi4pCiAgICBwcmludCgiQ2FsbGVkIGZvbyAuLi4iKQogICAgZm9yIGksIGFyZyBpbiBwYWlycyh7IC4uLiB9KSBkbwogICAgICAgIHdyaXRlbG4oIiAgICBhcmdzWyIsIGksICJdID09ICIsIGFyZykKICAgIGVuZAogICAgcHJpbnQoIi4uLiBmb28gZW5kIikKZW5kCgpsb2NhbCB0dXAgPSB7IDUsIDMuMTQsICJoZWxsbyB3b3JsZCIsIHsgNSwgMTAsIDE1IH0sIHsgZm9vID0gNSwgYmFyID0gMTAgfSB9CmZvbyh1bnBhY2sodHVwKSkK