0

我正在使用此处列出的示例:

http://www.luaj.org/luaj/3.0/README.html#5

它工作正常,但不是在 Lua 脚本中使用:

require 'hyperbolic'

我想在java代码中使用这个或类似的东西

_G.set("hyperbolic", new hyperbolic());

主要是在初始化时将初始参数传递给双曲线(如 new hyperbolic(2.4, 1.67) ),因此 Lua 脚本简单且“儿童”友好。

有什么想法或建议吗?谷歌没有帮助,可能是因为我正在寻找错误的东西..

4

1 回答 1

0

按照惯例,实现 lua 库的 Java 类的实例需要使用参数(modulename, environment)调用一次,然后它们会为提供的环境设置库。

按照编码,双曲线库忽略模块名称,并将其函数放入globals.hyperbolic

Globals globals = JsePlatform.standardGlobals();

hyperbolic module = new hyperbolic();
module.call(LuaValue.valueOf("hyperbolic"), globals);

这会加载库,因此您可以使用将这些全局变量作为其环境的脚本中的函数。例如,

LuaValue chunk = globals.load(
    "print( 'sinh(0.5)', hyperbolic.sinh(0.5) )");
chunk.call();

然后将输出

sinh(0.5)   0.5210953

require()不同,此示例不填充package.loaded表,因此如果您继续require('hyperbolic'),它可能会被第二次加载。

于 2016-01-23T19:52:31.220 回答