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