1.loadfile---只编译,不运行. loadfile编译代码成中间码并且返回编译后的chunk作为一个函数,而不执行代码:另外loadfile不会抛出错误信息而是返回错误代号. loadstring与loadfile相似,只不过它不是从文件里读入chunk,而是从一个串中读入. 2.dofile----编译.运行. dofile,其实首先是利用loadfile进行编译,然后再运行代码.我们可以定义dofile如下: function dofile (filename) local f =
[1]Lua函数,默认实参 习惯了其他语言(如C++)的默认实参,利用Lua语言的过程中,发现没有默认实参这种机制. 所以,自己模拟了一个满足业务需求的带默认实参的函数. (1)示例如下: local function func(arg1, arg2) if nil == arg2 then arg2 = true end if arg1 then print('arg1 value : ' .. arg1) else print('arg1 is false or nil') end if a
function TestFunc(...) local arg = { ... } --Lua .2以后不再支持默认arg参数,{}与...之间要有空格 print("输入的参数个数:".. #arg) for i, v in ipairs(arg) do print(v) end end print("***************************************"); function TestFunc2(...) print("输入
本来想用这种方式统一安全删除node,后来发现参数变成(a userdata value),所以不能用下面这个方式做 方法如下: function RemoveNodeSafe(node) if node ~= nil then node:removeFromParent() node = nil endend 错误原因举例: local a=5 local function deleteA(arg) arg = nil end deleteA(a) print(a) 最后a是等于5的
function test( ... ) if (...) then dibug("has ...") else dibug("no ...") end for k, v in ipairs({...}) do dibug("for ipairs v = " .. tostring(v)) end for k, v in pairs({...}) do dibug("for pairs v = " .. tostring(v)
local num = 123 local str = "abc" local tb ={} 数字和字符串类型的值作为参数传递的时候,是复制值,2个独立的内存地址 table类型的值传递的时候是传的地址(类似c++的指针或者索引),所以这里需要注意,任何保存索引的地方 修改对象值以后 其他的地方的索引对象值同步改变,因为是指向一个内存地址