能否将table.concat作为一组参数使用?

我正在使用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
点赞
用户2858170
用户2858170

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)

有许多其他方法可以实现这一点。

2019-03-19 13:23:41