Vital.sandbox
Table

table.pack

Shared

Packs values into a table with size information


Syntax

local result = table.pack(...)

Parameters

TypeNameDescription
......Values to pack into a table

Returns

TypeNameDescription
tableresultTable containing all values with field n set to the number of arguments

Examples

--Pack multiple values
local t = table.pack(1, 2, 3, 4, 5)
engine.print(t[1], t[2], t[3]) --1  2  3
engine.print(t.n) --5
--Pack with nil values
local t = table.pack("a", nil, "b", nil, "c")
engine.print(t[1], t[2], t[3]) --a  nil  b
engine.print(t.n) --5
--Pack function returns
local function multiReturn()
    return 10, 20, 30
end
local t = table.pack(multiReturn())
engine.print(t[1], t[2], t[3]) --10  20  30
engine.print(t.n) --3
--Pack strings
local t = table.pack("hello", "world", "lua")
for i = 1, t.n do
    engine.print(t[i])
end
--Output: hello, world, lua
--Pack empty (no arguments)
local t = table.pack()
engine.print(t.n) --0
--Pack single value
local t = table.pack(42)
engine.print(t[1]) --42
engine.print(t.n) --1
--Pack mixed types
local t = table.pack(1, "two", true, nil, {5})
engine.print(t.n) --5
engine.print(type(t[5])) --table
--Difference from # operator with nil
local t = table.pack(1, 2, nil, 4)
engine.print(#t) --4 (might be 2 depending on implementation)
engine.print(t.n) --4 (always correct)
--Preserve trailing nils
local t = table.pack(1, 2, 3, nil, nil)
engine.print(t.n) --5
engine.print(t[5]) --nil
--Iterate with correct count
local t = table.pack("a", nil, "b", nil)
for i = 1, t.n do
    engine.print(i, t[i])
end

On this page