[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++的指针或者索引),所以这里需要注意,任何保存索引的地方 修改对象值以后 其他的地方的索引对象值同步改变,因为是指向一个内存地址