2010-06-17 26 views

Trả lời

6

Nếu bạn đang cố gắng tìm kiếm thông tin phản ánh về một biến (danh sách các phương pháp, vv) sau đó bạn có thể sử dụng các chức năng class_info()class_names().

Lưu ý: Các chức năng này không được ghi nhận theo như tôi có thể nói, nhưng chúng ít nhất tồn tại trong Luabind 0.9. Sử dụng có nguy cơ của riêng bạn.

Để sử dụng các hàm Luabind này trong mã Lua của bạn, trước tiên bạn cần phải ràng buộc chúng. Ví dụ:

#include "luabind/class_info.hpp" 
/* ... */ 
luabind::open(L); 
luabind::bind_class_info(L); 

Sau đó từ mã Lua, bạn có thể nội quan một biến:

-- Variable "game" is an instance of class "Game" 
c = class_info(game) 

print(c.name) 
-- Prints: 
-- Game 

for k, v in pairs(c.methods) do print(k, v) end 
-- Prints: 
-- get_config function: 01765AE0 
-- on_init  function: 01765E90 
-- ... 

for k, v in pairs(c.attributes) do print(k, v) end 
-- ... 

Bạn cũng có thể có được một danh sách tất cả các lớp Luabind biết về:

for i, v in ipairs(class_names()) do print(v) end 
-- Prints: 
-- class_info_data 
-- Config 
-- Game 
-- ... 
+0

Cảm ơn. Nó là một công cụ rất hữu ích để có được một thông tin lớp học. Tôi đã tìm kiếm nó trong một thời gian dài. Nhưng nó không giải quyết được hoàn toàn vấn đề. Đó là những gì tôi đã tìm thấy trong danh sách gửi thư luabind: "Tôi đã tìm ra cách sử dụng class_info và nó hoạt động tốt để lấy tên lớp và phương thức chứ không phải thuộc tính. Chỉ những thuộc tính được hiển thị bởi C++ được liệt kê trong Thuộc tính chứ không phải các thuộc tính được tạo ra trong lua. Làm thế nào tôi sẽ nhận được một danh sách các thuộc tính được tạo ra trong lua, trong C++ và giá trị của chúng? " – kFk

Các vấn đề liên quan