WoW:Function arguments: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
(Actually, just #redirect Lua)
(Undo revision 1304888 by Mikk (talk))
Line 1: Line 1:
#redirect [[Lua]]
== It's quite simple really... ==
 
Functions can have arbitrarily defined arguments defined in the opening line and subsequently used within the body of the function.  Your parameters can be called any valid Lua name.
 
Below is a simple function without arguments, followed by another function that calls on the first:
 
function MyAddon_Mimic()
    DEFAULT_CHAT_FRAME:AddMessage("Hello World!")
end
function MyAddon_Call()
    MyAddon_Mimic()
end
 
Now the same function with arguments (you can define any number of arguments):
 
function MyAddon_Mimic(arg1)
    DEFAULT_CHAT_FRAME:AddMessage("Hello " .. arg1)
end
  function MyAddon_Call()
    MyAddon_Mimic("Buddy!")
end
 
Whereas the first example would've simply printed "Hello World!" to the chat window, the second example will now print "Hello Buddy!"  However, arg1 is a pretty non-discriptive argument name (and we only used one).  Let's try something more interesting:
 
function MyAddon_Mimic(who, send)
    local posX, posY = [[API GetPlayerMapPosition|GetPlayerMapPosition]](who);
    if send==1 then
      DEFAULT_CHAT_FRAME:AddMessage(who .. " is currently at location " .. posX .. "," .. posY)
    end
end
  function MyAddon_Call()
    MyAddon_Mimic("player", 1)
    MyAddon_Mimic("party1", 1)
    MyAddon_Mimic("party2", 0)
end
 
Here, our little addon will now print the location of our player and our first party member, but while it will get the location of party member 2, it won't print it.
 
[[Category: HOWTOs|Function Arguments]]

Revision as of 18:18, 14 April 2008

It's quite simple really...

Functions can have arbitrarily defined arguments defined in the opening line and subsequently used within the body of the function. Your parameters can be called any valid Lua name.

Below is a simple function without arguments, followed by another function that calls on the first:

function MyAddon_Mimic()
   DEFAULT_CHAT_FRAME:AddMessage("Hello World!")
end

function MyAddon_Call()
   MyAddon_Mimic()
end

Now the same function with arguments (you can define any number of arguments):

function MyAddon_Mimic(arg1)
   DEFAULT_CHAT_FRAME:AddMessage("Hello " .. arg1)
end

 function MyAddon_Call()
   MyAddon_Mimic("Buddy!")
end

Whereas the first example would've simply printed "Hello World!" to the chat window, the second example will now print "Hello Buddy!" However, arg1 is a pretty non-discriptive argument name (and we only used one). Let's try something more interesting:

function MyAddon_Mimic(who, send)
   local posX, posY = GetPlayerMapPosition(who);
   if send==1 then
      DEFAULT_CHAT_FRAME:AddMessage(who .. " is currently at location " .. posX .. "," .. posY)
   end
end

 function MyAddon_Call()
   MyAddon_Mimic("player", 1)
   MyAddon_Mimic("party1", 1)
   MyAddon_Mimic("party2", 0)
end

Here, our little addon will now print the location of our player and our first party member, but while it will get the location of party member 2, it won't print it.