lua编程注意事项

参数个数非预期的问题

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



你可能感兴趣的:(love2d)