Tôi có đối tượng userdata Lua với một loại có thể so sánh nhất định (ví dụ: "stackoverflow.test"
). Từ mã C, tôi muốn có thể kiểm tra chính xác loại đó là gì và hoạt động khác nhau tùy thuộc vào kết quả. Có một chức năng tiện dụng tốt đẹp (thay vì như luaL_checkudata
, nhưng không có lỗi nếu câu trả lời không phải là những gì bạn muốn) mà hãy để tôi truy vấn tên loại có thể so sánh của userdata? Nếu không, tôi đoán tôi cần phải sử dụng lua_getmetatable
, nhưng sau đó tôi là một chút không rõ ràng làm thế nào tôi xác định tên của metatable đó chỉ là được thêm vào ngăn xếp.Truy vấn loại dữ liệu người dùng Lua từ C
Chỉ cần làm rõ: Tôi đang sử dụng Lua 5.1, nơi mà hành vi của luaL_checkudata đã được thay đổi. Tôi hiểu rằng trong 5.0 nó đã không được sử dụng để báo lỗi.
Có vẻ như lua 5.2 đã có những gì bạn đang tìm kiếm: [luaL_testudata] (http://www.lua.org/source/5.2/lauxlib.c.html#luaL_testudata) –