,如果一个函数调用是一系列表达式中的最后一个表达式,则该函数调用将产生尽可能多的返回值以匹配待赋值变量:
x,y = foo2() -- x = "a", y = "b"
x = foo2()...-- x = "a", "b"被丢弃
x,y,z = 10, foo2() -- x = 10, y = "a", z = "b"
在多重赋值中,如果一个函数没有返回值或者返回值个数不够多,那么Lua...语言会用nil来补充缺失的值:
x,y = foo0() -- x = nil , y = nil
x,y = foo1() -- x = "a" , y = nil
x,y,z = foo2()...-- x = "a" , y = "b" , z = nil
请注意,只有当函数调用一系列表达式中的最后一个表达式时才能返回多值结果,否则只能返回一个结果:
x,y = foo2(), 20 --...例如,在IOS C中,我们无法编写泛型调用的代码,只能声明可变长参数的函数或使用函数指针来调用不同的函数。