使用Lua,我試圖動態地調用帶參數的函數。 我想發出一個字符串的方式,解析:Lua:動態調用帶參數的函數
- 第一個參數是一個類的實例「處理」
- 第二點是被稱爲
- 所有剩下的參數的函數
「模塊」是像{ string=<instance of a class> }
分裂()是一個簡單的解析器返回表與索引字符串AA表。
function Dynamic(msg)
local args = split(msg, " ")
module = args[1]
table.remove(args, 1)
if module then
module = modules[module]
command = args[1]
table.remove(args, 1)
if command then
if not args then
module[command]()
else
module[command](unpack(args)) -- Reference 1
end
else
-- Function doesnt exist
end
else
-- Module doesnt exist
end
end
當我嘗試這與「忽略刪除鮑勃」,由「參考文獻1」,它試圖呼籲與模塊「忽略」相關的實例「刪除」,並給出了說法「鮑勃」,包含在一個表中(具有單個值)。
但是,在調用的另一端,remove函數不接收參數。我甚至試圖用
module[command]("bob")
替代「但是我得到了同樣的結果。
這裏是其它功能,不接受的說法"bob"
:
function TIF_Ignore:remove(name)
print(name) -- Reference 2
TIF_Ignore:rawremove(name)
TIF_Ignore:rawremovetmp(name)
print(title.. name.. " is not being ignored.")
end
我的代碼中增加了「參考文獻2」時,我試圖找出什麼是錯的。當我做「忽略刪除bob」,或者當我用「參考1」中的「bob」替換「unpack(args)」時,「remove」中的變量「name」仍然是零。
你的代碼看起來不錯。 「另一方」是什麼樣的。 – 2010-03-14 06:43:53
功能'split'看起來像什麼,因爲它不是標準Lua的一部分。 – 2010-03-14 07:01:32