Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我一直在修补 Lua C API,并且偶然发现了一些我自己无法完全弄清楚的东西。
好吧,我知道你不能有多个具有不同元表的 lighuserdata,但是即使指针是相同的类型,是否可以在不同的 C 模块中拥有具有单独元表的 lightuserdata?
例如。
模块 A:lightuserdata 指向整数类型 + 元表 A 模块 B:lightuserdata 指向整数类型 + 元表 B
我希望模块 B 不会覆盖模块 A 中 lightuserdata 上的元表。
有谁知道这是否会发生?
Lightuserdata 不能有单独的元表:所有的 lightuserdata 值都有相同的元表,最初为 nil。如果您为 lightuserdata 值提供元表,它将被设置为所有 lightuserdata 值。
拥有单独的元表是普通的、完整的用户数据的目的。只需使用完整的用户数据,不要三思而后行。