在C#中嵌入一个Lua交互式提示窗口。

我试图在我的 C# 应用程序中提供一些脚本功能。 经过一些搜索,Lua 和 LuaInterface 看起来是一个合理的方式来做这件事。 通过在我的 C# 代码中嵌入一个 Lua VM,我可以加载一个 Lua 脚本并处理在 C# 类定义的方法,而无需任何问题。

然而,我想知道是否有一种方法不仅可以在我的 c# 程序中执行 lua 脚本文件,而且还可以在我的程序中拥有一个 lua 交互式提示? 这样我就可以输入命令并立即看到返回值。

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

最好的问候

原文链接 https://stackoverflow.com/questions/5838491

点赞
stackoverflow用户501459
stackoverflow用户501459

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 失败的第二个返回值),以及评估代码的返回值(成功的 pcall 的第 2..N 个返回值)进行增强。

如果您想要非常高级的功能,可以允许用户输入多行语句。请查看源发行版中的 src/lua.c 来看如何实现。

2011-04-30 10:15:24