了解lua函数如何工作?

时间:2014-12-16 16:05:28

标签: function lua

我有一个使用多个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

这个功能有效但我仍然不明白为什么以及如何,我会对任何提示都很满意。

1 个答案:

答案 0 :(得分:4)

_通常是一个抛弃变量。

在这种情况下,虽然它没有任何意义,可以很容易地完全省略。

ci应该是一个函数,co应该是一个表格。

vovi同样(虽然我无法肯定vo)。

该函数正在使用迭代器函数和ipairsfs.dir函数的状态返回来构造自己的迭代器。

return iter, {co=co, vo=vo}, num返回一个interator函数,一个状态表和初始循环变量(0调用中的ipairs)。

在循环中使用时会循环遍历civix的值。