Lua 中访问数组元素不能很好地工作

当我有一个返回多个值的函数时,我可以将它们存储在单独的值中,也可以使用 {} 运算符获取数组。

要访问值,我可以定义一个变量来存储值,也可以通过 array[index] 来访问数组。当我使用临时变量打印值时,我编写的代码如下:

function myTest()
  return "abc", "def", "geh";
end

a = {myTest()};
v = a[2];
print(v);

这非常有效。但是,当使用

function myTest2()
  return "abc", "def", "geh";
end

print({myFunction2()}[2]);

从函数打印“索引数组转换返回值”时,没有任何内容被打印。

有人能解释一下吗?

点赞
用户11953465
用户11953465

表单:

{myFunction2()}[2]

在语法上是无效的。我得到了一个意外符号的错误。

你可以这样编写:

({myFunction2()})[2]

然后它按预期工作。

2019-09-23 20:57:13
用户4984564
用户4984564

不要这样做。当你想立刻访问一个函数的第N个返回值时,使用(select(N, ...)),它不会创建一个新的表(因此对垃圾收集器的工作负担较小)。

function myTest2()
  return "abc", "def", "geh";
end

print( (select(2, myFunction2())) );

请注意,将值列表括在()中会将其截断为第一个值;这是必要的,因为select(N, ...)返回第N个及其之后的所有值。(select(N, ...))仅返回第N个值。

2019-09-25 12:35:48