Tôi có một hàm lồng nhau tương đối sâu trong một nhóm bảng. Có cách nào trong C/C++ để có được một "tài liệu tham khảo" để chức năng đó và đẩy rằng (và args) vào ngăn xếp khi tôi cần phải sử dụng nó?Tham chiếu đến hàm Lua trong C/C++
Trả lời
Đây là những gì mà reference system dành cho. Gọi hàm r = luaL_ref(L, LUA_REGISTRYINDEX)
lưu trữ giá trị ở trên cùng của ngăn xếp trong sổ đăng ký và trả về một số nguyên có thể được lưu trữ ở phía C và được sử dụng để truy lục giá trị bằng lệnh gọi hàm lua_rawgeti(L, LUA_REGISTRYINDEX, r)
.
Xem PiL chapter, cũng như tài liệu về luaL_ref()
, lua_rawgeti()
và luaL_unref()
cho toàn bộ câu chuyện.
API Lua (http://www.lua.org/manual/5.1/manual.html#3) có thể được sử dụng để xác định bất kỳ thành viên nào trong bảng mà bạn muốn. Sử dụng lua_gettable() để trích xuất một thành viên bảng và đặt nó trên ngăn xếp lua, nếu thành viên cũng là một bảng chỉ cần gọi lua_gettable() một lần nữa để truy cập vào bảng này ...
(Tùy thuộc vào những gì bạn đang làm lua_rawget() có thể là một lựa chọn tốt hơn so với lua_gettable())
addtional để phản ứng lại bình luận:
được rồi đó là thú vị hơn một chút. Vâng, một bảng là một đối tượng tham chiếu (nhiều hơn hoặc ít hơn), vì vậy bạn có thể an toàn để lưu tham chiếu bảng trong cùng một nơi nào đó.
Vì API lua dường như không có cách nào để thao tác trực tiếp bảng ref, có thể bạn sẽ phải đẩy ref vào toàn cầu hoặc nếu nó không hoạt động một bảng mới với một mục nhập bảng duy nhất. Khi bạn muốn ref sau này, chỉ cần lấy nó từ toàn cầu.
ví dụ:
// Final table reference is now at top of stack, after multiple dereferences
lua_setglobal(L, "mytableref");
- 1. undefined tham chiếu đến một hàm tĩnh
- 2. tham chiếu mảng php chuyển đến hàm
- 3. Scala: trả về tham chiếu đến hàm
- 4. Tìm tất cả các tham chiếu đến một đối tượng trong Lua
- 5. ctypes và chuyển qua tham chiếu đến hàm
- 6. Đi qua tham chiếu đến một hàm tạo
- 7. Lỗi "Tham chiếu đến hàm" không được xác định
- 8. pydev: tìm tất cả các tham chiếu đến hàm
- 9. c + + chuyển bản đồ bằng cách tham chiếu đến hàm
- 10. Truyền mảng như tham số hàm trong Lua?
- 11. Lưu trữ tham chiếu đến tham chiếu bằng Python?
- 12. Tham chiếu đến con trỏ
- 13. Tham chiếu đến các biến trong C#?
- 14. C++: Làm thế nào để chuyển tham chiếu đến hàm thành một hàm khác?
- 15. Ghi đè lên hàm vỏ, giữ tham chiếu đến hàm gốc
- 16. Tham chiếu đến Mảng hai chiều
- 17. Chuyển các tham chiếu đến một hàm dựng C++ và lưu chúng vào các loại tham chiếu hoặc không tham chiếu
- 18. Mục đích của việc sử dụng tham chiếu đến tham chiếu trong C++ là gì?
- 19. Thêm lọ tham chiếu đến android build.xml
- 20. Tìm Tham chiếu đến Lớp & Phương pháp
- 21. Nuget "đã có tham chiếu đến"
- 22. Tham chiếu đến đại biểu UIApplication
- 23. Tham chiếu đến System.data.entity.design.dll không hoạt động
- 24. "Đã có một tham chiếu đến Essential.Diagnostics"
- 25. Hai lớp tham chiếu đến nhau
- 26. openpyxl tạo hàm tham chiếu ô trong trang tính khác
- 27. Lấy tham chiếu đến thêm Inbox
- 28. Tham chiếu đến phụ huynh IFRAME
- 29. Vectơ tham chiếu đến các đối tượng
- 30. thư không được gửi đến mọi người trong CC
Tôi đã biết cách thực hiện điều đó :) Tôi muốn nhận hàm được tham chiếu lồng nhau sâu trong bảng để sau này tôi có thể gọi hàm mà không phải duyệt qua tất cả các bảng đó. – jameszhao00
[Đã thêm vào câu trả lời] –