Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
-1

Help with ipairs function?

Asked by 9 years ago

I would like to better understand how to use this function within scripting as I do not yet understand how to use it to its fullest.

1 answer

Log in to vote
2
Answered by
adark 5487 Badge of Merit Moderation Voter Community Moderator
9 years ago

pairs and ipairs are the two default iterator functions. What this means is that they have a specific use: in a generic for loop.

ipairs iterates through an array, starting at index 1 and going up by one until it finds a value of nil.

Tables by default use array-indexing, so this will normally be what you want.

pairs, however, goes through every index-value pair once. The order, however, it not determinable until the loop is run at least once.

local table = workspace:GetChildren()
--This table looks something like:
--{workspace.Camera,workspace.Part,workspace.Terrain,workspace.Model}

table[#table + 2] = "This won't be reached by ipairs, because there is a value of `nil` at #table + 1"
table["Neither will this"] = "since it has a string key."

print('Ipairs loop:\n')
for i, v in ipairs(table) do
    print(i) --Notice how these always appear in order.
    print(v)
    print('----')
end

print('\nPairs loop:\n')
for i, v in pairs(table) do
    print(i) --Notice that now, the order is different. It's consistent, but in no general order.
    print(v) --Also, they two that were missed are printed with `pairs`
    print('----')
end
Ad

Answer this question