我試圖在我的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