玉石王lua函数默认值_定义函数参数的默认值
如果你想要命名参数和默认值,如PHP或Python,你可以使⽤表构造函数调⽤你的函数:
myfunction{a,b=3,c=2}
函数本⾝可以有这样的签名:
rapper
function myfunction(t)
word下标tmetatable(t,{__index={b=7,c=5}})
老虎的介绍
local a,c =
t[1] or t.a,t[2] or t.b,t[3] or t.c
-- function continues
end
参数表中缺少的任何值都将从其metatable中的__index表中获取(参见the documentation on metatables)。
当然,使⽤表构造函数和函数可以使⽤更⾼级的参数样式 – 你可以写任何你需要的。例如,here是构造从定义参数名称和默认值的表中获取命名或位置参数表的函数的函数,以及采⽤正则参数列表的函数。李保国事迹
作为⾮语⾔级功能,可以更改此类调⽤以提供新的⾏为和语义:
>可以使变量接受多个名称
>位置变量和关键字变量可以是散布的 – 并且定义两者可以优先(或导致错误)
观赏鱼缸>可以进⾏关键字⽆位置变量,以及⽆名位置
>相当冗长的表构造可以通过解析字符串来完成
张子宣>nbar>如果函数使⽤除了1表以外的函数调⽤,则可以逐字使⽤参数列表
⼀些⽤于写参数翻译器的有⽤函数是unpack(在5.2中移动到table.unpack),tfenv(在5.2中⽤新的_ENV结构不推荐使⽤)和lect(返回给定参数列表中的单个值,列表与’#’)。