함수를 테이블 집합에 상대적으로 중첩시켜 있습니다. C/C++에서 그 함수에 대한 "참조"를 얻고 그것을 사용할 필요가있을 때 (그리고 args) 스택에 밀어 넣는 방법이 있습니까?C/C++의 Lua 함수에 대한 참조
13
A
답변
20
여기가 reference system입니다. 함수 호출 r = luaL_ref(L, LUA_REGISTRYINDEX)
은 스택의 맨 위에있는 값을 레지스트리에 저장하고 C 측에 저장할 수있는 정수를 반환하고 lua_rawgeti(L, LUA_REGISTRYINDEX, r)
이라는 함수 호출로 값을 검색하는 데 사용됩니다.
자세한 내용은 PiL chapter과 luaL_ref()
, lua_rawgeti()
및 luaL_unref()
의 설명서를 참조하십시오.
2
Lua API (http://www.lua.org/manual/5.1/manual.html#3)를 사용하여 원하는 테이블 구성원을 처리 할 수 있습니다. lua_gettable()을 사용하여 테이블 멤버를 추출하고 lua 스택에 배치하십시오. 멤버가 테이블이라면이 테이블에 액세스하기 위해 lua_gettable()을 다시 호출하는 등등 ...
lua_rawget을하고 다시 '()보다 더 나은 선택이 될 수도 lua_gettable()) Addtional
응답에 대해 언급하기 :
이 좋아하는 좀 더 흥미 롭군요. 글쎄, 테이블은 참조 오브젝트 (다소간)이므로 가장 안쪽 테이블 참조를 어딘가에 저장하는 것이 안전 할 것입니다.
lua API는 table ref를 직접 조작 할 수있는 것 같지 않으므로 ref를 전역으로 푸시해야하거나 단일 테이블 항목이있는 새 테이블을 작동하지 않을 수 있습니다. 나중에 참조를 원하면 전역에서 가져 오기만하면됩니다.
// Final table reference is now at top of stack, after multiple dereferences
lua_setglobal(L, "mytableref");
관련 문제
- 1. Cc의 ProperCase에 대한 mcdonalds
- 2. 멤버 함수에 대한 참조?
- 3. 함수에 대한 lvalue 참조 란 무엇입니까?
- 4. C++ : 함수에 대한 정의되지 않은 참조
- 5. libpq 함수에 대한 정의되지 않은 참조
- 6. Lua envronment 내부에서 Lua 프로그램에 대한 엔트리 포인트 찾기
- 7. Lua 함수에 non-Global C++ 객체 전달하기 (Swig)
- 8. 어떻게 Lua 함수를 C 함수에 전달하고 Lua 함수를 여러 번 실행합니까?
- 9. C++ 템플릿 메서드가있는 함수에 대한 정의되지 않은 참조
- 10. 함수에 대한 포인터와 WINAPI 함수에 대한 포인터의 차이점은 무엇입니까?
- 11. 함수에 대한 .net 4
- 12. member 함수에 대한 인수가
- 13. 함수에 대한 다중 선언
- 14. Getcontext 함수에 대한 질문
- 15. 함수에 대한 C 포인터
- 16. Android 코드에 대한 Lua 단위 테스트
- 17. 어셈블리 함수에 대한 포인터 전달
- 18. Lua metatable question
- 19. Oracle/SQLServer의 분석 함수에 대한 고급 자습서
- 20. 함수에 대한 포인터에 대한 게터을 writting
- 21. 멤버 함수에 대한 포인터를 저장
- 22. CImage 저장 함수에 대한 질문
- 23. CakePHP 동일한 'view'여러 함수에 대한
- 24. 복합 함수에 대한 TDD 접근법
- 25. SQL 함수에 대한 별도의 쿼리?
- 26. 함수에 대한 인자가 너무 많습니다.
- 27. SQLite에서 BETWEEN 함수에 대한 인덱스
- 28. Clojure의 함수에 대한 힌트 유형
- 29. CURLOPT_WRITEFUNCTION 멤버 함수에 대한 포인터
- 30. 스칼라의 제네릭 함수에 대한 도움말
나는 그 방법을 이미 알고있다. 나는 중첩 된 방법으로 테이블에서 깊이 참조 된 함수를 얻고 싶다. 그래서 나중에 모든 테이블을 가로 지르지 않고 함수를 호출 할 수있다. – jameszhao00
[답변에 추가됨] –