13

我知道在 Python 中很容易做到:someList[1:2] 但是在 Lua 中你是怎么做到的?该代码给了我一个语法错误。

4

3 回答 3

17
{unpack(someList, from_index, to_index)}

但是表索引将从 开始1,而不是从from_index

于 2013-03-05T13:53:15.727 回答
12

unpackLua 内置的功能可以为您完成这项工作:

返回给定表中的元素。

你也可以使用

x, y = someList[1], someList[2]

相同的结果。但是这种方法不能应用于可变长度的

用法

table.unpack (list [, i [, j]])

返回给定表中的元素。这个函数相当于

return list[i], list[i+1], ···, list[j]

默认情况下,i1并且j#list

显示相同工作的键盘链接。

于 2013-03-05T14:03:04.873 回答
5

完全等同于Python

someList = [ 'a', 'b', 'c', 'd' ]
subList = someList[1:2]
print( subList )    

在 Lua中是

someList = { 'a', 'b', 'c' , 'd' }
subList = { unpack( someList, 2, 2 ) }
print( unpack(subList) )

关键是unpack返回不是表格的“多个结果”,因此要在 Lua 中获取列表(也称为表格),您需要使用and将结果“制表” 。{}

但是,您不能在 Lua 中打印表格,但可以打印多个结果,因此要获得有意义的输出,您需要再次解包。

因此,与 Python 使用列表来模拟多个返回不同,Lua确实拥有它们。


Nb在 Lua 的更高版本中unpack变为table.unpack

于 2018-06-11T15:24:00.897 回答