lua编译,运行与调试

 lua编译,运行与调试
visualxyk 发表于 2008-4-14 21:03:00
0
推荐

dofile("filename") ----每次调用都会重新对filename进行编译

loadfile("filename") --- 如果要运行一个文件多次,它只需要编译一次,却可以多次运行.

dofile可以这样定义:

function dofile(filename)

local f = assert(loadfile(fileame))

f()

end

其中f为loadfile编译完文件后返回的chunk块.

 

loadstring与loadfile相似,但它读入的是一个字符串.

f = loadstring("i = i+1")

f()

执行f()相当于执行了i = i+1.

另外,loadstring总是假设在全局环境下编译它的串.

 

 

require()函数用来加载运行库,它与dofile()完成相同的功能,但有两点不同:

一,require()会搜索目录加载文件.

二,require()会判断是否文件已经加载,避免重复加载同一文件.

require()的参数(路径)是一个模式列表.更明确地说,每一个模式是包含可选的问号的文件名.

 

可以通过访问全局变量 _LOADED["filename"] 是否为nil来判断指定文件是不是被加载了.

阅读全文 (139) | 回复(0) |反映问题 | 引用通告 (0) | 编辑


http://www.blog.edu.cn/user4/visualxyk/archives/2008/2113660.shtml



范型for循环
visualxyk 发表于 2008-4-14 20:22:00

for var_list in exp_list do

body

end

var_list为一个或多个的变量名列表,exp_list为一个或多个的表达式列表:迭代工厂的调用.

如:for var1, var2, var3, var4... in exp1, exp2, exp3 do block end

其中var1称为控制变量.当它为nil时for循环结束.

 

范型for的执行过程为:

首先,初始化,计算in后面的表达式的值.它返回范型for需要的三个变量(迭代函数,状态常量,控制变量).与多赋值一样,返回的结果个数不足变量列表个数时用nil补足,多出的话则被丢弃.

其实,将状态变量和控制变量作为参数调用迭代函数.(注意,对于范型for来说,状态变量没有用处,仅仅在初始化时获取它的值并传递给迭代函数.)

然后,将迭代器返回的值传递给变量列表var_list,即var1, var2... 如果返回的第一个值var1的值为nil则结束循环,否则执行循环体

最后,跳到第二步再次调用迭代函数.

更具体地说,

for var1, var2, var3.... in exp_list do block end

的具体执行过程也可以这样表示:

do

   local _f, _s, _curr_var = exp_list  ;返回迭代函数,状态变量,控制变量

   while true do

        local var1, ..., varn = _f(_s, _curr_var)

       _curr_var = var1

       if _curr_var == nil then break end

      block

end

end

也就是说,如果我们的迭代函数是f,状态变量是s,控制变量的初值是a0,那么循环将这样进行:

a1 = f(s, a0), a2 = f(s, a1), a3 = f(s, a2), a4 = f(s, a3), a5=f(s, a4), ....直到an == nil为止.

 

       

你可能感兴趣的:(list,function,lua)