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 参考手册上找不到任何关于这个的官方解释。

点赞
用户107090
用户107090

注释: 在表构造函数和函数参数中的求值顺序未定义,以为编译器优化留下余地。

无论如何,您都不应依赖求值顺序。

这不仅适用于Lua,大多数编程语言不会指定表达式列表中的求值顺序。

2018-04-04 19:09:45