我刚刚和Lua玩了一下,尝试了Koneki eclipse插件,非常好看.问题是,当我在一个函数中进行更改时,我正在调试,此时保存更改时更改无效.所以我被迫重启应用程序.如果我可以在调试器中进行更改并且它们将在运行中变得非常有效,例如使用Smalltalk,或者在Java中使用热代码替换,可能会有所改进.有人知道这是否可行?
在某种程度上可能存在一些限制.我一直在开发一个提供此功能的IDE /调试器.它使您可以访问远程控制台,以在正在运行的应用程序的上下文/环境中执行命令.IDE还支持实时编码,在您对其进行更改时重新加载修改后的代码; 看看这里的演示.
主要限制是您无法修改当前正在运行的功能(至少在不更改Lua VM的情况下).这意味着只有在退出并重新输入该功能后才能看到对当前正在运行的功能的更改效果.它适用于重复调用相同功能的环境(例如游戏引擎调用draw),但在您的情况下可能不起作用.
另一个挑战是处理upvalues(在函数之外创建并在其中引用的值).有些方法可以"读取"当前的上升值并在创建(新)函数时重新创建它们,但它需要进行一些代码分析才能找到要重新创建的函数来查询它们的upvalues,获取当前值,然后使用这些upvalue创建一个新环境并为它们分配适当的值.我当前的实现不会这样做,这意味着您需要使用全局变量作为变通方法.
前几天在Lua邮件列表上也进行了相关讨论.