Comments (4)
README 写了
注入 Lua 表
类似注入普通变量。
java:
lua.newTable(); // 新建一个table,并压入栈。
lua.pushString( "from" );
lua.pushString( "java" );
lua.setTable( -3 ); // 设置一个元素
lua.pushString( "value" );
lua.pushString( "Hello lua" );
lua.setTable( -3 );
lua.setGlobal( "table" );
首先需要创建一个 table。接着将 key、value 依次入栈,随后调用 lua.setTable()
设置一个元素。它接受一个参数指明要设置的 table 在栈中的位置。因为我们已经压入了两个值,因此 table 的位置是-3
。它会弹出栈顶的两个值分别作为 value、key。最后使用 lua.setGlobal()
弹出 table 本身并注入为变量。
上面代码运行后,等价于下面的 Lua table 定义:
table = {}
table["from"] = "java"
table["value"] = "Hello lua"
from android-lua.
谢谢回答。这样是可以作为全局变量传,我想问问能不能方法传参的方式调用呢。比如lua中有个方法是需要传局部变量。我试过构造一个map,然后调用pushJavaObject方式
Map map = new HashMap<>;
map.put(xx,xx);
lua.pushJavaObject(map)
但这个方法行不通。或者说pushJavaObject支持传递哪些java类型呢
from android-lua.
我觉得你的用法有问题。
pushJavaObject
是把 java 对象传给 lua,仅仅是传递一个引用,它仍然是 java 对象。因此 lua 拿到后要按照处理 obj 的方式来使用。这种做法也不推荐。
你的需求更像是先把 java map 转为 lua table,然后传给 lua 函数。此时 lua 接收到的就是一个原生的 lua table。要想这么做,只要把文档里「注入 Lua 表」部分和「Java 调用 Lua 函数」结合起来使用就行了。
- 获取 lua 函数入栈。
- 构造 lua 表
- 此时栈中有一个函数和一个 lua table。
- 调用 pcall 执行函数,指明有1个参数,lua 虚拟机会自动把栈中的那个元素作为参数取出来。
pushJavaObject支持传递哪些java类型呢
理论上支持全部类型,因为传的只是引用而已。
from android-lua.
原来如此,多谢
from android-lua.
Related Issues (20)
- 怎么编译成So库呢 HOT 1
- 当lua代码出现死循环我该怎么停止运行这个时候button没有反应 HOT 1
- 当lua代码出现死循环 我该怎么停止运行 这个时候button没有反应 HOT 1
- 怎么样查看lua代码的报错信息,那有没有办法调试lua代码呀类似于断点 HOT 2
- package.path在android中默认的路径是哪? HOT 2
- 在执行lua代码的时候想要中途退出但不关闭app可以怎么做 HOT 2
- JavaFunction lua那边怎么传List和Map到Java呢? HOT 1
- pairs 在 lua文件里没办法使用 HOT 2
- 多次注入不同的java对象,setGlobal 使用同一个变量名,能覆盖之前的对象吗? HOT 1
- 请问怎么在lua程序里setmetatable? HOT 1
- 调用lua标准库的函数print(),在lua中应该怎么获取到print函数输出的值? HOT 1
- 我想debugger,能不能实现在安卓上调试lua代码,因为我见过别人可以在任意行进行下断跟踪的 HOT 2
- lua 脚本里可以直接调用 java 函数吗 HOT 2
- 请问应该怎么使用多线程呢? HOT 6
- 無法在Java 物件函數使用自己傳回的數值,會exception
- 如何访问java类的属性呢? HOT 1
- 请问如何正确实现sleep延时效果 HOT 2
- 请问如何调用luac编译过的lua文件呢? HOT 2
- Nokia C20 Plus load lua fail HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from android-lua.