我一直在修改Lua C API,我偶然发现了一些我自己无法理解的东西。
嗯,我知道你不能拥有多个带有不同metatable的lighuserdata,但是即使指针属于同一类型,是否可以在不同的C模块中使用lightuserdata和单独的mettables?
例如
模块A:lightuserdata指向整数类型+ Metatable A 模块B:lightuserdata指向整数类型+ Metatable B
的指针我希望模块B不会覆盖模块A中lightuserdata上的元表。
任何人都知道这是否会发生?
答案 0 :(得分:0)
Lightuserdata不能有单独的元表:所有lightuserdata值都具有相同的元表,最初为零。如果为lightuserdata值提供metatable,它将被设置为所有lightuserdata值。
拥有单独的元表是普通的完整用户数据的目的。只需使用完整的用户数据,不要三思而行。