语法: function func-name (arguments-list)
func-part
end
调用方法:func-name(arguments--list) 其中当参数是表构造或字符串时()可省略。
另外,实参与形参之匹配与多值赋值时的变量与值的匹配类似,多了忽略,不足补nil。
多返回值:return + 返回值列表即可返回多个值。
当函数多返回值用在函数调用参数、赋值语句、表构造时遵循以下原则:若函数调用为最后一个参数
或仅有的参数则返回尽可能多的值,否则只返回一个值。
另外可以在函数调用外加括号,强制函数只返回一个值,如(a()),则不管函数a本来应该返回几
个值,现在都只返回一个值。一个return如果将返回值用()括起来,则也只返回一个值。(这个不
知怎么理解,验证时编译报错)
最后一个多值返回的特殊函数,unpack()接受一个数组作为参数,返回数组的所有元素。(这里所
谓数组是指,table中所有从1开始的元素,其他元素都不会返回。即通过a[1]这种形式引用的元素,
而且若自己指定一个下标,若从1开始下标递增中a[i]=nil,则以后的元素都不再返回。)
可变参数:function func-name(arg1,arg2,...)
func-part
end
前面arg1、arg2为固定参数,可以有0到多个。lua会将后面的不定参数放在一个名为arg的table中,
同时还会产生一个域n=i,i为不定参数个数。表arg可在函数内使用。
命名参数:当有多个参数,参数顺序会难以记清。此时可以将函数设计为传table进去,这样通过table.key引用
即可保证顺序不会传错。例如,rename(oldname,newname),若设计为
rename(a){rename(a.old,a.new)},则我们不必记下参数顺序,只要穿个一个包含old和new 的
table就可以了,并保证结果总是我们想要的。
Lua 函数,变参
最新推荐文章于 2022-12-28 20:43:37 发布