API unpack

104,672pages on
this wiki
Add New Page
Talk0 Share
WoW Lua

Returns the values in a consecutive-integer indexed table

ret1, ret2, ... retN = unpack(table[, start [, end]])

Will not return values with hash style indexes. For example:

local t = {1, "two", "3", x = "ecks", y = "why?"}
unpack(t) -- returns: 1, "two", "3"

Arguments Edit

(table) - A table
Integer - Starting index, defaults to 1 if nil
Integer - Ending index, appends nil values if the table does not contain enough

Returns Edit

ret1, ret2, ... retN
A list of the values contained in the given table.

Examples Edit

local arg1, arg2, arg3 = unpack({1, 5, "Hearthstone"})

-- This does the same thing:
local arg1, arg2, arg3 = 1, 5, "Hearthstone"
unpack({1,2,3,4,5},2,7)  -- returns 2, 3, 4, 5, nil, nil

Notes Edit

unpack() doesn't return all the values in the following example because it is not a contiguous table.

 -- Notes Example 1
 t = {1,nil,"something",nil}
 print(unpack(t))  -- prints 1

A simple fix would be to add a value at the end of the list. This works because when you assign a table in this manner, Lua treats it as a contiguous table as long as there is a value at the last index. Nuking this value before adding new values at the end will break this behavior.

 -- Notes Example 2
 t = {1,nil,"something",nil,1}
 print(unpack(t))  -- prints 1 nil "something" nil 1
 t[5] = nil
 print(unpack(t))  -- prints 1

If you assign each value individually, unpack() will behave the same way it does in Notes Example 1.

 -- Notes Example 3
 t = {}
 t[1] = 1
 t[2] = nil
 t[3] = "something"
 t[4] = nil
 t[5] = 1
 print(unpack(t))  -- prints 1 even though it's the same contents as in Notes Example 2.

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random Wiki