WoW:API for: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 5: Line 5:
Executes 'statements' for each value of 'variable' from 'lowvalue' to 'highvalue', at a step value of 'step' inclusive.  Other syntax options yet unknown.
Executes 'statements' for each value of 'variable' from 'lowvalue' to 'highvalue', at a step value of 'step' inclusive.  Other syntax options yet unknown.


  for [key],[value] in [table] do [statements] end
  for [key],[value] in pairs([table]) do [statements] end


Executes 'statements' for each element of the 'table'. 'key' contains element key (index), 'value' contains element value.
Executes 'statements' for each element of the 'table'. 'key' contains element key (index), 'value' contains element value.
Line 31: Line 31:


  /script myTable = {"a","b","c","d"};
  /script myTable = {"a","b","c","d"};
  for k,v in myTable do
  for k,v in pairs(myTable) do
       DEFAULT_CHAT_FRAME:AddMessage("The value of index "..k.." is "..v);
       DEFAULT_CHAT_FRAME:AddMessage("The value of index "..k.." is "..v);
  end;
  end;

Revision as of 01:18, 30 December 2006

Native Lua statement:

for [variable] = [lowvalue], [highvalue],[step] do [statements] end

Executes 'statements' for each value of 'variable' from 'lowvalue' to 'highvalue', at a step value of 'step' inclusive. Other syntax options yet unknown.

for [key],[value] in pairs([table]) do [statements] end

Executes 'statements' for each element of the 'table'. 'key' contains element key (index), 'value' contains element value.


Examples:

 /script for i=1,10 do DEFAULT_CHAT_FRAME:AddMessage(format("%d",i));end

More interesting example: (remember, all one line)

 /script for i=1,5 do
   name,description,standingID,barValue,atWarWith,canToggleAtWar,isHeader,isCollapsed=GetFactionInfo(i);
   DEFAULT_CHAT_FRAME:AddMessage(format("%s %d/%d",name,barValue*21000,21000));
 end


A few examples using the newly found <step> value:

/script for i=10,1,-1 do DEFAULT_CHAT_FRAME:AddMessage(format("%d",i));end

Will count from 10 to 1.

/script for i=10,0,-2 do DEFAULT_CHAT_FRAME:AddMessage(format("%d",i));end

Will count from 10 to 0 skipping every other number.

/script for i=2,10,2 do DEFAULT_CHAT_FRAME:AddMessage(format("%d",i));end

Will count even numbers from 2 to 10.

Examples for the 'in' version of the syntax:

/script myTable = {"a","b","c","d"};
for k,v in pairs(myTable) do
     DEFAULT_CHAT_FRAME:AddMessage("The value of index "..k.." is "..v);
end;

Output:

The value of index 1 is a
The value of index 2 is b
The value of index 3 is c
The value of index 4 is d


Tigerheart 03:34, 3 Nov 2005 (EST) - Added info on [step]

Tigerheart 15:10, 7 Feb 2006 (EST) - Added "for, in" syntax

Drundia 20:47, 3 July 2006 (EDT) - One missing qutes, fixed "for v,k in t" to correct "for k,v in t"

Template:LUA