Lua中表初始化的顺序

And*_*eas 3 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)}
Run Code Online (Sandbox Code Playgroud)

测试表明func()按表元素初始化的顺序进行调用,但是可以保证吗?我似乎在Lua参考资料中没有找到任何关于此的信息,但是我敢肯定对此有一些正式的解释。

lhf*_*lhf 5

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

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

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