Lua中表初始化的顺序

时间:2018-04-04 19:03:06

标签: lua

我知道在使用pairs()迭代所有表元素时,无法保证表元素顺序。表元素可以按任何顺序返回。

但是如何初始化表格,例如请考虑以下代码:

function func(x)
  print(x)
  return(x)
end   

t = {func(0), x = func(1), y = func(2), [0] = func(3), func(4), [1000] = func(5)}

测试显示func()按表格元素初始化的顺序调用,但这是否有保证?我似乎没有在Lua参考中找到任何关于此的内容,但我确信必须有一些正式的解释。

1 个答案:

答案 0 :(得分:4)

表构造函数和函数参数中的求值顺序未定义为允许编译器进行优化的空间。

无论如何,你不应该依赖评估的顺序。

这不是Lua特有的。大多数语言都没有在表达式列表中指定评估顺序。