luajava数值和对象传递的一个例子

本文展示了如何在Java中通过Lua脚本实现简单的加法运算及对象传递,包括加载Lua库、执行Lua代码、调用Lua函数、参数传递和结果返回,以及对象实例的Lua方法调用。

转自:http://univasity.iteye.com/blog/493339

-----------------------------------------
-- test01.lua
Lua代码   收藏代码
  1. function sum(a, b)  
  2.  return a+b  
  3. end  
  4. function test1(v)  
  5.  v:init()  
  6. end  
 
/////////////////////////////////////////////////////
// Test01.java
Java代码   收藏代码
  1. public class Test01 {  
  2.   
  3.     /** 
  4.      * @param args 
  5.      */  
  6.     public static void main(String[] args) {  
  7.           
  8.         LuaState L = LuaStateFactory.newLuaState();  
  9.         // 加载lua标准库,否则一些lua基本函数无法使用  
  10.         L.openLibs();  
  11.         // doFile  
  12.         L.LdoFile("res/test01.lua");  
  13.           
  14.         //---------------------------------------------值传递测试  
  15.         // 找到函数 sum  
  16.         L.getField(LuaState.LUA_GLOBALSINDEX, "sum");  
  17.           
  18.         // 参数1压栈  
  19.         L.pushNumber(100);  
  20.           
  21.         // 参数2压栈  
  22.         L.pushNumber(50);  
  23.           
  24.         // 调用,共2个参数1个返回值  
  25.         L.call(21);  
  26.           
  27.         // 保存返回值到result中  
  28.         L.setField(LuaState.LUA_GLOBALSINDEX, "result");  
  29.           
  30.         // 读入result  
  31.         LuaObject lobj = L.getLuaObject("result");  
  32.         // 打印结果   
  33.         System.out.println(lobj.getNumber());  
  34.           
  35.         //---------------------------------------------对象传递测试  
  36.         Value v = new Value();  
  37.           
  38.         L.getField(LuaState.LUA_GLOBALSINDEX, "test1");  
  39.           
  40.         try {  
  41.             L.pushObjectValue(v);  
  42.         } catch (LuaException e) {  
  43.             e.printStackTrace();  
  44.         }  
  45.           
  46.         L.call(10);  
  47.           
  48.         v.print();  
  49.     }  
  50.   
  51. }  
  52.   
  53. class Value {  
  54.     private int i;  
  55.       
  56.     public void init(){  
  57.         i = 111;  
  58.     }  
  59.       
  60.     public void print(){  
  61.         System.out.println(i);  
  62.     }  
  63.       
  64. }  
    • luaInJava.rar (116.1 KB)
    • 描述: 部分例子源代码
    • 下载次数: 236


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值