我正在为一个项目使用 lua,现在我想在另一个文件中使用另一个类的一些函数。但它似乎不适合我。第一个参数没有被移交,但我不知道为什么。
文件索引.lsp:
dbc = dofile("/home/mako/www/.lua/DBC.lua")
dbc.connectDevice(name, id, ptid)
DBC.lua:
function DBC:connectDevice(name, id, ptid)
trace(name)
trace(id)
trace(ptid)
end
在我打印的痕迹上:
1
72893789(ptid)
nil
代替
ESP
1
72893789
当我改变参数的顺序时,它就像一个偏移量,如下所示
索引.lsp:
dbc.connectDevice(id, name, ptid)
DBC.lua
function DBC:connectDevice(id, name, ptid)
trace(name)
trace(id)
trace(ptid)
end
在我打印的痕迹上:
ESP
72893789(ptid)
nil
代替
1
ESP
72893789
有人可以向我解释我必须做什么或者我犯了什么错误吗?
最佳答案
请记住,在 Lua 中,语法 function DBC:connectDevice(name, id, ptid) ... end
只是以下代码的简写:
function DBC.connectDevice(self, name, id, ptid)
...
end
请注意隐式 self
参数作为第一个函数参数。这意味着当您调用该函数时,您必须将对象作为第一个参数传递,如下所示:
DBC.connectDevice(DBC, name, id, ptid)
或者,您可以再次使用冒号语法来隐式传递对象:
DBC:connectDevice(name, id, ptid)
关于function - Lua函数参数是如何传递的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50109795/