Lua功能参数如何移交?

价钱

我正在为项目使用lua,现在我想在另一个文件中使用另一个类的某些功能。但这似乎不适合我。第一个参数没有移交,但我不知道为什么。

文件index.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

还有,当我更改参数顺序时,就像一个偏移量,如下所示

index.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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章