我有一个使用多个lua脚本的HTML项目,我有一个很大的问题,它隐藏了一个函数的功能(我是lua的新手):
........................
已完成所有要求并且还定义了路径
local fs = require "lfs"
local const = {}
for num = 1, 14 do
const[num] = assert(
dofile (const_path .. mkfilename(num)),
"Failed to load constant configuration ".. num ..".")
end
local function file_number() --this is the function that causes me a headach
local ci, co, num = ipairs(const)-- when I print num is 0 and ci,co are nil
local vi, vo, _ = fs.dir(virt_path)-- what does _ mean here ?
local function vix(o)
local file = vi(o)
if file == nil then return nil end
local number = file:match("^(%d+).lua$")
if number == nil then return vix(o) end
return tonumber(number)
end
local function iter(o, num)
return ci(o.co, num) or vix(o.vo, num)---where is ci defined or impplemented
end
return iter, {co=co, vo=vo}, num-- what 's the return value here ?
end
这个功能有效但我仍然不明白为什么以及如何,我会对任何提示都很满意。
答案 0 :(得分:4)
_
通常是一个抛弃变量。
在这种情况下,虽然它没有任何意义,可以很容易地完全省略。
ci
应该是一个函数,co
应该是一个表格。
vo
和vi
同样(虽然我无法肯定vo
)。
该函数正在使用迭代器函数和ipairs
和fs.dir
函数的状态返回来构造自己的迭代器。
行return iter, {co=co, vo=vo}, num
返回一个interator函数,一个状态表和初始循环变量(0
调用中的ipairs
)。
在循环中使用时会循环遍历ci
和vix
的值。