WoW:USERAPI GetReturnValues: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
m (catfix)
m (→‎Code: efficiency?)
Line 41: Line 41:
<!-- Paste your function(s) here. Make sure to prefix each line with at least one space. You may want to replace some troublesome characters with HTML entities when necessary, e.g. "<" becomes &lt;, etc.. -->
<!-- Paste your function(s) here. Make sure to prefix each line with at least one space. You may want to replace some troublesome characters with HTML entities when necessary, e.g. "<" becomes &lt;, etc.. -->


local output = {}
  function {{PAGENAME}}(order, ...)
  function {{PAGENAME}}(order, ...)
     local output = {}
     output = wipe(output)
     order = tostring(order)
     order = tostring(order)
     for i=1, strlen(order) do
     for i=1, strlen(order) do
         local value = select(tonumber(strsub(order, i, i), ...)
         local value = select(tonumber(strsub(order, i, i)), ...)
         if value ~= nil then
         if value ~= nil then
             table.insert(output, value)
             table.insert(output, value)
Line 51: Line 52:
     end
     end
     return unpack(output)
     return unpack(output)
end
Variant
local {{PAGENAME}}_Out
function {{PAGENAME}}(order, ...)
    {{PAGENAME}}_Out = {}
    order = tostring(order)
    for i=1, strlen(order) do
        local value = select(tonumber(strsub(order, i, i)), ...)
        if value ~= nil then
            table.insert({{PAGENAME}}_Out, value)
        end
    end
    return unpack({{PAGENAME}}_Out)
  end
  end


__NOTOC__
__NOTOC__
[[Category:User defined functions]]
[[Category:User defined functions]]

Revision as of 09:55, 24 December 2008

This page documents a user-defined function that you can copy and paste into your addon. Replace PREFIX with your addon or lib prefix to avoid conflicts between different versions of these functions.

User defined functions

Returns a list of values in whatever order you specify in order and only those you specify in order. Mostly useful for functions that return multiple values.

ret1, ret2, ... retN = USERAPI GetReturnValues(order, functionCall)
  • Note: the efficiency of this approach is questioned. See the discussion page.

Function Parameters

Arguments

(order, functionCall)
order
number or numeric string
e.g. 17 or "17"
functionCall
a function call that returns a list of values.
e.g GetItemInfo(itemLink)

Returns

the number of and order of return values depend on the number specified in order and on the function passed to functionCall

Example:1

local sName, iRarity, sType, iStackCount = USERAPI GetReturnValues(1368, GetItemInfo(16846));
message(sName..","..iRarity..","..sType..","..iStackCount);

Result:1

USERAPI GetReturnValues will return the first, third, sixth, and eighth return values (in that order) from GetItemInfo(16846)
A message box will pop-up with -
Giantstalker's Helmet,4,Armor,1.

Example:2

local reason, name = USERAPI GetReturnValues(61, GetAddOnInfo("Uber Addon"));
if reason then
    _ERRORMESSAGE(name.." didn't load.\nReason code: "..reason..".");
end

Result:2

USERAPI GetReturnValues will return the sixth and first return values (in that order) from GetAddOnInfo("Uber Addon")
A error message box will pop-up with -
Uber Addon didn't load.
Reason code: MISSING

Code

local output = {}
function USERAPI GetReturnValues(order, ...)
    output = wipe(output)
    order = tostring(order)
    for i=1, strlen(order) do
        local value = select(tonumber(strsub(order, i, i)), ...)
        if value ~= nil then
            table.insert(output, value)
        end
    end
    return unpack(output)
end