Type: concept
Confidence: 0.90
Created: 2026-04-20
Updated: 2026-04-20
Tags: Luatableunpack陷阱UrhoX表构造器Lua编程

table-unpack表构造器陷阱

概述

Lua 的 table.unpack() 只有在表构造器的最后位置才会完全展开所有元素,其他位置只取第一个值,这与 JavaScript [...arr, x]Python [*arr, x] 的行为完全不同。

关键内容

  1. 错误用法{ table.unpack(items), "extra" } 只展开第一个元素,结果为 {1, "extra"} 而非 {1, 2, 3, "extra"}。原因是 unpack 不在最后位置时,Lua 只取第一个返回值。
  2. 正确用法{ "header", table.unpack(items) } 将 unpack 放在最后,结果为 {"header", 1, 2, 3}。unpack 必须是表构造器的最后一个元素才能完全展开。
  3. 跨语言对比:JavaScript 的 [...arr, x]Python[*arr, x] 可以在任意位置展开,但 Lua 不支持这种灵活性,需要特别注意。

来源

相关