Function Lua-调用具有更多已定义参数的函数

Function Lua-调用具有更多已定义参数的函数,function,parameters,lua,Function,Parameters,Lua,出于某种原因,我需要理解lua代码中未注释的部分。我不是在Lua工作,但我能够根据多种其他语言的知识充分理解它。但有一件事让我惊讶,我不知道如何理解它(因为我在其他语言中从未遇到过): 定义了一个函数,其中有一个参数: function dosomething(a) ... end 该函数没有其他定义。该函数仅在程序的一个位置调用-使用两个参数: dosomething(a, b) 根据上下文和名称,调用的第一个参数实际上是函数的第一个参数。那么,另一个参数呢?试图用谷歌搜索,但到

出于某种原因,我需要理解lua代码中未注释的部分。我不是在Lua工作,但我能够根据多种其他语言的知识充分理解它。但有一件事让我惊讶,我不知道如何理解它(因为我在其他语言中从未遇到过):

定义了一个函数,其中有一个参数:

function dosomething(a) 
  ...
end
该函数没有其他定义。该函数仅在程序的一个位置调用-使用两个参数:

  dosomething(a, b)
根据上下文和名称,调用的第一个参数实际上是函数的第一个参数。那么,另一个参数呢?试图用谷歌搜索,但到目前为止运气不好


谢谢您的帮助。

任何额外的参数都将被忽略


任何缺少的参数都被赋予值nil。

任何额外的参数都将被忽略

任何缺少的参数都被赋予值nil

试图用谷歌搜索,但到目前为止运气不好

下次尝试Lua手册

参数充当使用初始化的局部变量 参数值:

parlist::=namelist[',''.']|'.'当Lua函数 调用时,它会根据参数列表的长度调整参数列表 参数,除非函数是vararg函数 由参数列表末尾的三个点(“…”)表示

那么一个函数定义为

function dosomething(a) end
只有一个参数
a

称为
dosomething(c,d)
Lua将首先计算参数列表。因此,如果
d
是一个函数,它将被调用并被其返回值替换

然后会有一个任务发生。对于所有赋值,值列表将根据变量的数量进行调整<代码>d将被忽略,这将给您留下
a=c

Lua允许多个赋值。因此,赋值的语法 在左侧定义变量列表和表达式列表 在右边。两个列表中的元素都用逗号分隔:

stat::=varlist'='解释列表varlist::=var{','var}解释列表:= exp{',“exp}表达式在§3.4中讨论

在赋值之前,值列表将调整为 变量列表。如果值超过需要,则 多余的值被丢弃。如果值少于需要的值, 列表扩展为零

所以
a=b,c
变成
a=b
a,b=c
变成
a,b=c,nil

试图用谷歌搜索,但到目前为止运气不好

下次尝试Lua手册

参数充当使用初始化的局部变量 参数值:

parlist::=namelist[',''.']|'.'当Lua函数 调用时,它会根据参数列表的长度调整参数列表 参数,除非函数是vararg函数 由参数列表末尾的三个点(“…”)表示

那么一个函数定义为

function dosomething(a) end
只有一个参数
a

称为
dosomething(c,d)
Lua将首先计算参数列表。因此,如果
d
是一个函数,它将被调用并被其返回值替换

然后会有一个任务发生。对于所有赋值,值列表将根据变量的数量进行调整<代码>d将被忽略,这将给您留下
a=c

Lua允许多个赋值。因此,赋值的语法 在左侧定义变量列表和表达式列表 在右边。两个列表中的元素都用逗号分隔:

stat::=varlist'='解释列表varlist::=var{','var}解释列表:= exp{',“exp}表达式在§3.4中讨论

在赋值之前,值列表将调整为 变量列表。如果值超过需要,则 多余的值被丢弃。如果值少于需要的值, 列表扩展为零


所以
a=b,c
变成
a=b
a,b=c
变成
a,b=c,nil
Lua允许,但是
b
什么也不做。谢谢。我想这可能是答案,但不愿意相信:)Lua允许,但
b
什么也不做。谢谢。我想这可能是答案,但不愿意相信:)