我可以使用table.concat作为一组参数吗?

问题描述 投票:1回答:1

我正在使用LOVE2D来习惯lua,我试图调用一个函数让一个圆圈出现在屏幕上,有5个参数,我有一个称为'button'的表,其中包含所需的参数。我想使用table.concat来填写所有空白参数,但它不会让我。反正有没有这样做?

function toRGB(r,g,b)
    return r/255,g/255,b/255
end

function love.load()
    button = {}
    button.mode = "fill"
    button.x = 0
    button.y = 0
    button.size = 30
end

function love.draw()
    love.graphics.setColor(toRGB(60,60,60))
    love.graphics.circle(table.concat(button))
end
lua love2d
1个回答
2
投票

table.concat返回一个字符串。那不是你想要的。

要获取表元素列表,请使用table.unpack。但是此函数仅适用于具有从1开始的连续数字索引的表。

此外,love.graphics.circle按位置访问其参数,而不是按名称访问。因此,您必须确保放入该函数的表达式列表具有正确的顺序。

所以类似于:

button = {"fill", 0, 0, 30}
love.graphics.circle(table.unpack(button))

会工作。

如果您在示例中使用其他表键,则必须编写一个以正确顺序返回值的函数。

在最简单的情况下

button = {}
button.mode = "fill"
button.x = 0
button.y = 0
button.size = 30
button.unpack = function() return button.mode, button.x, button.y, button.size end
love.graphics.circle(button.unpack())

或者你可以这样做:

function drawCircle(params)
  love.graphics.circle(params.mode, params.x, params.y, params.size)
end
drawCircle(button)

还有很多其他方法可以实现这一目标。

© www.soinside.com 2019 - 2024. All rights reserved.