【发布时间】:2017-05-16 00:54:20
【问题描述】:
假设我有一个返回多个值的函数。我碰巧正在与 LÖVE 的(Image):getDimensions 合作。这将返回两个值,我知道它们是width,height。我想将它们作为数组分配给一个新表。我想要命名(字符串)键。因此,例如,我想将 getDimensions() 函数的返回值分配给一个新表,键分别为 width 和 height。
我知道以下作品...
image = {}
image.data = love.graphics.newImage('myimage.png')
image.size = {}
image.size.width, image.size.height = image.data:getDimensions()
我想知道是否有任何我可以使用的语法糖,或者任何标准库函数的使用将允许语法更符合...
image.size = { width, height = image.data:getDimensions() }
我知道上面的行不起作用,以及我尝试过的许多变体,包括使用unpack() 的各种尝试。我是 Lua 的新手(现在大约 2 天),所以也许还有另一个我不知道的标准函数或最佳实践会将一个键表关联到一个类似数组的表。谢谢!
【问题讨论】:
-
你可以做image.size = table.pack(image.data:getDimensions()),但这会创建image.size[1]和image.size[2],即生成图像。用整数键调整表的大小。这可能不是你想要的。
-
@MarcBalmer 谢谢你,马克,但这是我试图避免的。我希望以后能够通过特定名称引用元素,例如
width和height。看来我什至不需要使用table.pack(),因为我可以将函数调用包装在大括号中(这可能与table.pack()做同样的事情),就像image.size = { image.data:getDimensions() }一样。我目前正在考虑我真正想要的将通过使用辅助函数的类类构造和带有__newindex定义的__metatable来完成。