我正在使用此处列出的示例:
http://www.luaj.org/luaj/3.0/README.html#5
它工作正常,但不是在Lua脚本中使用:
require 'hyperbolic'
我想在java代码中使用这个或类似的东西
_G.set("hyperbolic", new hyperbolic());
主要是在初始化时将初始参数传递给双曲线(如新的双曲线(2.4,1.67),因此Lua脚本很简单并且“小孩”友好。
有任何想法或建议吗?谷歌没有帮助,可能是因为我在寻找错误的东西..
答案 0 :(得分: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'),它可能会第二次加载。