lua中是否有任何多重赋值的方法,使得右侧缺失的值不被视为nil?
类似于
a,b,c = 1
Run Code Online (Sandbox Code Playgroud)
但得到
a = 1, b = 1, c = 1
Run Code Online (Sandbox Code Playgroud)
结果。
很遗憾,
a = b = c = 1
Run Code Online (Sandbox Code Playgroud)
不起作用。
我需要这个,因为我可能在右侧有复杂的表格,并且我想保持它简短(没有任何附加变量)。
没有。
您的第一个示例(多重赋值)已经具有明确定义的语义,因此 Lua 需要一个加法运算符/关键字/某些东西来指示对不同语义的需求(重复最后一个 r 值)。事实并非如此。
你的第二个例子(将赋值链接在一起,ala C)要求赋值是表达式,而在 Lua 中它们是语句。
最接近的方法是定义一个将值多次压入堆栈的函数:
function push(x)
return x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x
end
Run Code Online (Sandbox Code Playgroud)
那么你可以说:
a,b,c,d,e,f,g = push(t)
Run Code Online (Sandbox Code Playgroud)
但这是相当糟糕的。
出于好奇,为什么需要在同一范围内对同一张表进行一堆不同的引用?