【问题标题】:Accessing array elements in lua does not work well在 lua 中访问数组元素效果不佳
【发布时间】:2020-01-23 23:17:13
【问题描述】:

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

要访问这些值,我可以定义一个变量来存储值或通过array[index] 访问数组。当使用 temp var 打印我编码的值时:

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

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

效果很好。但是当使用

从函数中打印“索引数组转换的返回值”时
function myTest2()
  return "abc", "def", "geh";
end

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

什么都没有打印出来。

谁能解释一下为什么?

【问题讨论】:

    标签: lua


    【解决方案1】:

    形式:

    {myFunction2()}[2]
    

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

    你可以这样写:

    ({myFunction2()})[2]
    

    然后它按预期工作。

    【讨论】:

    • 请注意,您可以使用 luac -p <file.lua> 解析 Lua 文件以查找语法错误而不执行它(当您在静默删除语法错误的系统上工作时很有用)
    【解决方案2】:

    别这样。当您想立即访问函数的Nth 返回值时,请使用(select(N, ...)),它不会创建新表(从而减少GC 的工作)

    function myTest2()
      return "abc", "def", "geh";
    end
    
    print( (select(2, myFunction2())) );
    

    请注意,在() 中包含值列表会将其截断为第一个值;这是必要的,因为select(N, ...) 返回Nth 和所有后续值。 (select(N, ...))只返回Nth 值。

    【讨论】:

      猜你喜欢
      • 2014-08-26
      • 1970-01-01
      • 2017-02-09
      • 2016-10-01
      • 2014-10-13
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      相关资源
      最近更新 更多