1、概述
函数只有一个参数,并且参数类型是字符串字面量或者表对象构造器,则括号是可选的
调用一个函数,可以传与函数定义数不相等个数的参数。lua会调整参数个数为函数定义的参数个数,将多余的参数丢弃,将缺少的参数补齐为nil
2、多结果
lua函数可以返回多个结果。在函数定义中,return语句中列出多个。
lua在调用函数中根据情况调整结果数。当调用函数作为语句时,会丢弃函数返回结构。当调用作为表达式时,只保持第一个结果。当调用作为表达式列表的最后一个表达式时,返回所有结果。列表会出现在以下四种情况下
- 多赋值
- 函数调用的参数列表
- 表构造器
- 返回语句
3、变参
函数定义参数列表中的...表示是变参的。函数定义中访问变参是通过三点。三点表达式称为变参表达式。
变参迭代,可以使用{...}表达式来收集到表中。但是当变参中有nil值时,{...}不是一个合适的顺序表。可以使用函数table.pack,来创建表,并且表中有字段n表示参数个数。
另外一种方式是使用select函数。返回第n个参数后的所有参数,否则返回变参参数的个数
当使用select,使其返回的结果数适配到1时,可以认为select(n, ...)是取的第n个参数
4、table.unpack
返回列表中的所有元素。
一个重要的应用场景就是通用调用。