1

我一直在修补 Lua C API,并且偶然发现了一些我自己无法完全弄清楚的东西。

好吧,我知道你不能有多个具有不同元表的 lighuserdata,但是即使指针是相同的类型,是否可以在不同的 C 模块中拥有具有单独元表的 lightuserdata?

例如。

模块 A:lightuserdata 指向整数类型 + 元表 A 模块 B:lightuserdata 指向整数类型 + 元表 B

我希望模块 B 不会覆盖模块 A 中 lightuserdata 上的元表。

有谁知道这是否会发生?

4

1 回答 1

1

Lightuserdata 不能有单独的元表:所有的 lightuserdata 值都有相同的元表,最初为 nil。如果您为 lightuserdata 值提供元表,它将被设置为所有 lightuserdata 值。

拥有单独的元表是普通的、完整的用户数据的目的。只需使用完整的用户数据,不要三思而后行。

于 2013-09-18T11:33:26.260 回答