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

时间:2019-03-19 12:58:41

标签: lua love2d

我使用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

1 个答案:

答案 0 :(得分: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)

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