1. 函数名后面必须加(),只有当函数只有一个参数,并且此参数是一个字面字符串或table构造式时,()可有可无。
dofile 'a.lua' <--> dofile('a.lua')
f{x = 10, y = 20} <--> f({x = 10, y = 20})
type{} <--> type({})
2. 多重返回值
1. 将函数调用作为一条单独的语句,舍弃函数所有返回值。
2. 作为表达式一部分调用,保留第一个返回值。
3. 作为一系列表达式中的最后一个元素,保留所有返回值。
3 unpack() :从下标1开始返回该数组的所有元素。
a, b = unpack{10, 20, 30} --> a=10, b=20, 30被丢弃
重要用途:“泛型调用”机制
f = stirng.find
a = {"hello", "ll"}
f(unpack(a)) --> 3 4
4 select访问变长参数
for i = 1, select('#', ...) do
local arg = select(i, ...) --得到第i个参数
<循环体>
end
注:LUA5.0中用局部table变量“arg”来接受变长参数。缺点在于,每当调用变长参数的函数时都会产生一个新的table,而新机制只有在需要时才创建这个table。