- Welcome to the Kancolle Wiki!
- If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord
Difference between revisions of "Module:Iterator"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
+ | -- [[Category:Todo]]: | ||
+ | -- more generic interface and compositions (filtering, grouping, mapping, sorting, etc.) | ||
+ | -- prevent clients from infinite loops | ||
+ | |||
local Iterator = {} | local Iterator = {} | ||
Revision as of 19:18, 6 October 2017
Documentation for this module may be created at Module:Iterator/doc
-- [[Category:Todo]]:
-- more generic interface and compositions (filtering, grouping, mapping, sorting, etc.)
-- prevent clients from infinite loops
local Iterator = {}
function Iterator.array(arr, i, n)
i = i or 0
n = n and math.min(#arr, n) or #arr
function step(n, i)
if i < n then
i = i + 1
return i, arr[i]
end
end
return function()
return step, n, i
end
end
function Iterator.equipmentById(context)
local from = context and context.from and tonumber(context.from) or 1
local to = context and context.to and tonumber(context.to) or 500
local collection = require('Module:Collection/Equipment')
local i = 1
local current
return {
next = function()
for _ = i, #collection do
if i >= from and i <= to then
current = collection[i].name
i = i + 1
return true
end
i = i + 1
end
current = nil
return false
end,
current = function()
return current
end,
}
end
--[[
function Iterator.test()
local iterator = Iterator.equipmentById({ from = "11", to = "20" })
while iterator.next() do
mw.log(iterator.current())
end
end
-- p.test()
]]--
return Iterator