정말 luajava를 사용하여 Java에서 배열을 가져와 루아에서 테이블을 "가져 오기"위해 노력하고 있습니다. .. 지금, 나는 몇 가지 쉬운 물건, 자바 인쇄 루아 - 바르을 할 수있게하고 .. 테이블에서 여기LuaJava : 전체 Lua-Table을 LuaJava와 같은 배열로 가져 오기
JAVA
LuaState L = LuaStateFactory.newLuaState();
L.openLibs();
L.LdoFile("data/test.lua");
L.getGlobal("x"); //I want to read lua-variable x
LuaObject obj = L.getLuaObject(L.getTop()); //So I get the top-element here
System.out.println(obj.getField("Version"));
작업 모두를 하나의 요소를 읽어 봤는데 LUA
x = { ["Version"] = 1.3,["Scans"] = 3 }
이제는 단일 값을 검색하는 것이 매우 쉽지만 Java로 전체 객체를 가져오고 싶습니다 (배열 또는 기타). 따라서 어떤 물건을 처리 할 수 있습니다. 루핑을 시도했습니다. 그 LuaObject 통해하지만 이후 iterable 또는 '실제'배열을 아직, 그건 불가능합니다. 단순히 출력 obj
그 lua 테이블 알려줍니다, 나는 .getObject, 많은 성공 바보 같은 많은 시도했다. 그럼 내가 프록시에 대해 뭔가 읽고 (그게 자바에서 값을 전달에 대한 루아, 아니에요, 내가 뭘 원하는지 보았다) (매우 가난하게) 문서화 된 javadoc에서 아무것도 찾을 수 없습니다, 누군가가 이걸로 경험이 있기를 바란다. 아마 정보를 찾기는 쉽지만 어렵 겠지. 이것에 대한 정보가 정말 만족 스럽습니다!
p.s. 원래 lua 파일을 변경할 수는 없지만 그 파일에는 하나의 큰 테이블 만 포함됩니다 ..
자, 이제까지 내 머리보다 약간 위의 것 같지만 시도해 보겠습니다. 그래서, 내 lua 테이블은 다소 동적이다 (거기에 사용자 이름이있다), 나는 getField를 사용하여 접근 할 수 없다. 그래서 1. 옵션이 아닌 것 같다. 반성은 완전히 새로운 것이고 첫눈에 조금 복잡해 보였다.나는 LdoString을 사용하려고 시도하고 루아에서 루프를 작성하여 java, dunno가 작동한다면 테이블을 채운다. 그러나 나는 그에게 샷을 줄 것이다. 답장을 보내 주셔서 감사합니다. 아마도 반성하기 쉽습니다. 나는 우리가 볼 것이라고 생각했다.) – bengalo
Java Reflection *은 사소한 것이 아니다. 필자가 "수동으로"말한 것은 다음과 같이 모든 과제를 작성해야한다는 것입니다 :'Data d = new Data(); L.getField (idx, "name"); d.name = L.toString (L, -1); L.getField (idx, "version"); d.version = L.toString (L, -1); ... '그리고 나중에 루아 스택 정리하는 것을 잊지 마세요 :) –
좋아요, 그때 나를 위해 반사;)하지만 만약 내가 그 이름이 뭔지 몰라, 나는 getField .. 그들을 검색 할 수 없습니다 항상 테이블 같은 이름이지만 항목은 사용자 이름과 서버입니다. 정확히 무엇인지는 알지 못합니다. 첫 번째 행은 항상 '버전'이고 두 번째 행은 항상 '스캔'이지만 스캔 내에서 나에게 알려지지 않은 서버 이름을 저장합니다 실행의 .. 그래서, 그 어떤 해결책? – bengalo