WoW:API for: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
No edit summary
 
m (Move page script moved page API for to API for without leaving a redirect)
 
(8 intermediate revisions by 8 users not shown)
Line 1: Line 1:
A "for" loop.
{{Stub/API|Needs a proper home; we generally don't document Lua language constructs here.}}
Native Lua statement:


'''for <variable> = <lowvalue>, <highvalue> do <statements>; end'''
for [variable] = [lowvalue], [highvalue],[step] do [statements] end


Executes 'statements' for each value of 'variable' from 'lowvalue' to 'highvalue', 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 pairs([table]) do [statements] end
 
Executes 'statements' for each element of the 'table'. 'key' contains element key (index), 'value' contains element value.


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


Line 12: Line 17:
   /script for i=1,5 do
   /script for i=1,5 do
     name,description,standingID,barValue,atWarWith,canToggleAtWar,isHeader,isCollapsed=GetFactionInfo(i);
     name,description,standingID,barValue,atWarWith,canToggleAtWar,isHeader,isCollapsed=GetFactionInfo(i);
     DEFAULT_CHAT_FRAME:AddMessage(format("%s %d/%d,name,barValue*21000,21000));
     DEFAULT_CHAT_FRAME:AddMessage(format("%s %d/%d",name,barValue*21000,21000));
   end
   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

Latest revision as of 04:45, 15 August 2023

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