Generic for

From Goodblox Wiki
Revision as of 16:51, 22 June 2020 by Pizzaboxer (talk | contribs) (Created page with "__TOC__ ==Introduction== Basic for loops have already been covered in Loops. If you haven't already done so, please review Loops. == Discussion == The generic <b>...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Introduction

Basic for loops have already been covered in Loops. If you haven't already done so, please review Loops.

Discussion

The generic for loop traverses all values returned by the iterator. The iterator is the number that keeps track of how many times a for loop is supposed to run. This is different from a the numeric for loop in Loops in that before we were simply displaying the iterator (or a function of the iterator) itself:

Numeric for:

for i=20,1,-2 do print(i) end

Now what we are doing is assigning a value to the iterator.

Let's make Table with the months of the year:

months = {"January", "February", "March", "April", "May", "June", "July",
 "August", "September", "October", "November", "December"}

We know that there are twelve months in the year, and we can also call January "month #1", February "month #2", and so on.:

revmonths = {["January"] = 1, ["February"] = 2, ["March"] = 3, ["April"] = 4, ["May"] = 5, ["June"] = 6,
 ["July"] = 7, ["August"] = 8, ["September"] = 9, ["October"] = 10, ["November"] = 11, ["December"] = 12}

Notice how we assigned a unique month number to each month of the year. Now we can find our iterators again:

print(revmonths["January"]) -- prints 1, which is the first month of the year
print(revmonths["December"]) -- prints 12, which is the twelfth month of the year

Script

months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", 
"November", "December"}

revmonths = {["January"] = 1, ["February"] = 2, ["March"] = 3, ["April"] = 4, ["May"] = 5, ["June"] = 6, 
["July"] = 7, ["August"] = 8, ["September"] = 9, ["October"] = 10, ["November"] = 11, ["December"] = 12}

print(revmonths["January"])
print(revmonths["February"])
print(revmonths["March"])
print(revmonths["April"])
print(revmonths["May"])
print(revmonths["June"])
print(revmonths["July"])
print(revmonths["August"])
print(revmonths["September"])
print(revmonths["October"])
print(revmonths["November"])
print(revmonths["December"])

Instead of having to slough through typing a print() command for every month, you can now do a for loop:

months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October",
 "November", "December"}

revmonths = {"January", "February", "March", "April", "May", "June", "July", "August", "September",
 "October", "November", "December"}
    
for i,v in ipairs(months) do
      revmonths[v] = i
print(revmonths[v])
    end