2011-04-29 34 views
2

我试图在我的C#应用​​程序中提供一些脚本功能。 经过一番搜索之后,Lua和LuaInterface看起来是一种合理的方式。 通过在我的C#代码中嵌入一个Lua VM,我可以加载一个Lua脚本并处理在C#类中定义的方法 ,而不会有任何问题。在C#中嵌入了一个Lua交互式提示窗口#

但是,我不知道是否有一种方法,不仅可以在我的c#程序中执行 中的lua脚本文件,还可以在我的程序中执行lua交互提示?因此,我可以输入命令并立即查看退货。

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

问候

回答

2

Lua的debug模块包含一个非常基本的交互式控制台:debug.debug()(Lua中使用手册暗示this module should be used only for debugging)。

如果这样不能满足您的需求,您可以很容易地自己实现一个。如果您要将它写入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,看看如何完成此操作。

+0

使用'debug'模块中的任何内容不是用于调试是一个坏主意。我建议从这个答案中删除第一段。 – 2011-05-01 13:21:19

+0

OP没有说他想要的控制台。它可能非常适合调试,在这种情况下,这些信息很有用。免责声明比删除更合适。我现在补充一下。 – Mud 2011-05-02 01:43:03