2011-04-29 67 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