我试图在我的C#应用程序中提供一些脚本功能。 经过一番搜索之后,Lua和LuaInterface看起来是一种合理的方式。 通过在我的C#代码中嵌入一个Lua VM,我可以加载一个Lua脚本并处理在C#类中定义的方法 ,而不会有任何问题。在C#中嵌入了一个Lua交互式提示窗口#
但是,我不知道是否有一种方法,不仅可以在我的c#程序中执行 中的lua脚本文件,还可以在我的程序中执行lua交互提示?因此,我可以输入命令并立即查看退货。
任何有关我应该从哪里开始工作的暗示将非常有帮助!
问候
我试图在我的C#应用程序中提供一些脚本功能。 经过一番搜索之后,Lua和LuaInterface看起来是一种合理的方式。 通过在我的C#代码中嵌入一个Lua VM,我可以加载一个Lua脚本并处理在C#类中定义的方法 ,而不会有任何问题。在C#中嵌入了一个Lua交互式提示窗口#
但是,我不知道是否有一种方法,不仅可以在我的c#程序中执行 中的lua脚本文件,还可以在我的程序中执行lua交互提示?因此,我可以输入命令并立即查看退货。
任何有关我应该从哪里开始工作的暗示将非常有帮助!
问候
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
,看看如何完成此操作。
使用'debug'模块中的任何内容不是用于调试是一个坏主意。我建议从这个答案中删除第一段。 – 2011-05-01 13:21:19
OP没有说他想要的控制台。它可能非常适合调试,在这种情况下,这些信息很有用。免责声明比删除更合适。我现在补充一下。 – Mud 2011-05-02 01:43:03