在c#中嵌入了一个Lua交互式提示窗口

本文关键字:一个 Lua 提示窗口 交互式 | 更新日期: 2023-09-27 17:53:44

我尝试在我的c#应用程序中提供一些脚本功能。经过一番搜索,Lua和luinterface看起来是一种合理的方法。通过在c#代码中嵌入Lua VM,我可以加载Lua脚本并处理方法在c#类中定义,没有任何问题。

然而,我想知道是否有一种方法不仅可以执行lua脚本文件我的c#程序,但也有一个lua交互提示在我的程序?因此,我可以键入命令并立即看到返回结果。

任何关于我应该从哪里开始工作的提示都将非常有帮助!

在c#中嵌入了一个Lua交互式提示窗口

Lua的debug模块包含一个非常基本的交互式控制台:debug.debug() (Lua手册建议该模块仅用于调试)。

如果这不能满足你的需求,你自己实现一个也很容易。如果你要用Lua本身来编写它,那么最基本的控制台将是:

while true do
   io.write("> ")
   loadstring(io.read())()
end

会因为语法或运行时错误而崩溃。一个稍微不那么简单的版本,它捕获(并忽略)错误:

while true do
   io.write("> ")
   local line = io.read()
   if not line then break end -- quit on EOF?
   local chunk = loadstring(line)
   if chunk then
      pcall(chunk)
   end
end

可以通过显示语法错误(失败时loadstring的第二个返回值)、运行时错误(失败时pcall的第二个返回值)、求值代码的返回值([2..](N]成功时返回pcall的值),等等。

如果你想让真正的花哨,你可以允许人们输入多行语句。查看源代码发行版中的src/lua.c,了解这是如何完成的。