我正在尝试将 LuaJ 与 Scala 一起使用。大多数事情都可以工作(实际上,如果你做对了,所有事情都可以工作!)但是由于 Scala 的 setter 实现,设置对象值的简单任务变得异常复杂。
斯卡拉:
class TestObject {
var x: Int = 0
}
卢阿:
function myTestFunction(testObject)
testObject.x = 3
end
如果我执行包含此 Lua 函数的脚本或行并将 TestObject 的强制实例传递给 myTestFunction,这会导致 LuaJ 中的错误。LuaJ 正在尝试直接写入该值,而 Scala 要求您通过隐式定义的 setter(使用可怕的名称 x_=,这不是有效的 Lua,因此即使尝试将其作为函数调用也会使您的 Lua 无法解析) .
正如我所说,有一些解决方法,例如定义您自己的设置器或使用@BeanProperty 标记。他们只是使应该易于编写的代码变得更加复杂:
卢阿:
function myTestFunction(testObject)
testObject.setX(testObject, 3)
end
有谁知道让 luaj 隐式调用 setter 进行此类分配的方法?或者我可能会在 luaj 源代码中查看以实现这样的事情?
谢谢!