Open main menu
Home
Random
Log in
Settings
About AddOn Studio
Disclaimers
AddOn Studio
Search
Editing
WoW:API select
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{wowlua}} Used to traverse a list. This function is usually used to capture the arguments passed to an ellipsis (...). The official usage of this function is to return a list (retN) starting from index to the end of the list (list). local ret1, ret2, retN = select(index, list) == Arguments == === Parameters === :;index :: Any non-zero number or the string "#". :;list :: Usually an ellipsis (...). === Returns === :;retN :: The number of items in the list or every value starting from index to the end of the list. == Examples == -- Common usage. local num = select('#', ...) -- Returns the number of arguments in the ellipsis. local arg = select(i, ...) -- Returns the value at index '''i'''. -- Print all of the function's arguments (those passed to the ellipsis (...) only) to the default chat frame. local msg for i = 1, select('#', ...) do msg = select(i, ...) DEFAULT_CHAT_FRAME:AddMessage(msg) end local a, b, c = select(2, 'a', 'b', 'c') -- a = 'b' -- b = 'c' -- c = nil === Catenation === select can be used to catenate a vararg list into an array. This is useful for returning info from [[API_GetBinding | GetBinding]], which returns a vararg list of unknown size. function MyAddon_Catenate(...) local t,v t = {} for i = 1, select("#", ...) do v = select(i, ...) tinsert(t, v) end return t end == Notes == * ''list'' can be value1, value2, value3, ... valueN; although, you will never see it used in that manner since you can just access value1 through valueN directly. * It is not recommended that you use this method on a table as you would have to pass the table to [[API_unpack|unpack]]() for every call to select (once plus the number of consecutive numeric indexes). For tables, use [[API_pairs|pairs]]() or [[API_ipairs|ipairs]](). * Indexes beyond the number of list items will return nil. : <pre>select(6, 'see', 'dog', 'run') -- returns nil</pre> * An index of 0 will produce an "index out or range" error. * Negative values wrap to the end of the list. : <pre>select(-1, 1, 2, 3, 4, 5) -- returns 5</pre> * A decimal index will be rounded to the nearest integer (1.1 rounds to 1, 1.9 rounds to 2). * Passing a function that returns a list as a parameter to another function will pass each return as a parameter to the function as if you were manually passing each variable to that function, so ''tinsert(tab, select(1, ...))'', will have unpredictable results. <pre>-- these are identical -- number 1 local msg, r, g, b, a, id = select(1, ...) DEFAULT_CHAT_FRAME:AddMessage(msg, r, g, b, a, id) -- number 2 DEFAULT_CHAT_FRAME:AddMessage(select(1, ...))</pre>
Summary:
Please note that all contributions to AddOn Studio are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see
AddOn Studio Wiki:Copyrights
for details).
Submissions must be written by you, or copied from a public domain or similar free resource (see
AddOn Studio Wiki:Copyrights
for details).
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Apinav
(
edit
)
Template:Editlink
(
edit
)
Template:Wowlua
(
edit
)