首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LuaJ如何在调用对象上运行函数( LuaJ正在创建新对象,如何避免)。

LuaJ如何在调用对象上运行函数( LuaJ正在创建新对象,如何避免)。
EN

Stack Overflow用户
提问于 2015-06-22 13:08:45
回答 1查看 300关注 0票数 0

我在luaj网站上做了一个简单的例子..LuaJ我正在尝试对当前正在使用的对象运行函数。但是luaJ正在制造一个新的物体。

我如何在当前对象上运行函数,而不是创建一个新对象。

考虑到下面的代码...

代码语言:javascript
复制
import org.luaj.vm2.Globals;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.lib.TwoArgFunction;
import org.luaj.vm2.lib.ZeroArgFunction;
import org.luaj.vm2.lib.jse.JsePlatform;

public class luaTest extends TwoArgFunction {

    public luaTest() {}
    changeInt mytest=new changeInt();

    public LuaValue call(LuaValue modname, LuaValue env) {
        LuaValue library = tableOf();
        library.set( "countup", new countup(mytest) );
        env.set( "luaTest", library );
        return library;
    }

    void run() {
        Globals globals = JsePlatform.standardGlobals();
        mytest.setA(10); // Setting it 10 before calling the script
        LuaValue chunk = globals.loadfile("script.lua");

        chunk.call();

    }
    class countup extends ZeroArgFunction {
        changeInt mytest;
        public countup(changeInt a)
        {
            mytest=a;
        }
        public LuaValue call() {
            return LuaValue.valueOf(mytest.countup());
        }
    }

}

changeInt类只有一个变量...

代码语言:javascript
复制
public class changeInt {

    int a = 1;
    public int countup(){
        return a++;
    }
    public void setA(int x)
    {
        a=x;
    }

}

luaScript很简单..

代码语言:javascript
复制
require 'luaTest'

print('count',luaTest.countup())
print('count',luaTest.countup())
print('count',luaTest.countup())

有没有办法绕过它..

EN

回答 1

Stack Overflow用户

发布于 2015-06-23 14:24:48

是的,这对java程序员来说是非常琐碎的(我对java是个新手)..我使用了Singleton pattern,它解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30972444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档