参数个数非预期的问题
function a()
return "a1", "a2"
end
print(1, a())
print(1, a(), 2)
打印的结果是
1 a1 a2
1 a1 2
可以看到,第二次打印的时候a的第二个返回值丢失了。这是因为lua函数的有效返回值个数是不确定的,函数调用如果不是在形参的最后,编译结果中只能占据一个形参位,乃无奈之举。
比较是否相等
nil == false
param = param or 1
首先,nil和false不相等,但是对if判断时都是假。第二行是附默认值的常见写法,但是如果希望:参数是布尔值,如果没指定就为true,并且可以指定为false,那么上面的写法就有问题了,当指定为false时,参数的而最终值还是true。这时候应当写为:
错误:param = param or true
正确:param = param == nil or true