Lua调用函数时传入参数多于定义数量的处理规则咨询
Lua函数调用传入超出定义数量参数的处理规则
- 当调用Lua函数时传入的实参数量大于函数定义的形参数量时,多余的实参会被直接丢弃,不会触发语法报错。你给出的示例中
dosomething(a, b)调用后,函数形参a会被赋值为传入的第一个实参的值,第二个实参b没有对应的形参接收,会被直接忽略,函数内部无法直接访问到该参数。 - 补充Lua参数匹配的通用规则:如果实参数量少于形参数量,未被匹配到的形参会被自动赋值为
nil。 - 如果需要接收可变数量的多余参数,需要在函数定义的形参末尾添加可变参数标识
...,示例如下:
-- 支持接收多余参数的写法 function dosomething(a, ...) local extra_params = {...} -- 所有多余参数会被存入该table print(a, extra_params[1]) end dosomething(1, 2) -- 输出 1 2
- Lua本身不支持函数重载,同名函数的定义会直接覆盖之前的定义,和参数数量、参数类型没有关联,不会出现根据实参数量匹配不同函数的情况。
内容的提问来源于stack exchange,提问作者user1835395
相关产品推荐
相关产品推荐

