【发布时间】:2014-11-27 07:33:13
【问题描述】:
我是 Lua 的新手,我正在尝试了解它的 OO 部分,例如:
lkw = {}
lkw.la= 0
function lkw:func(ge)
self.la = self.la + ge
end
function lkw:new()
local res = {}
setmetatable(res, self)
self.__index = self
return res
end
mylkw = lkw:new()
在本例中,“类”lkw 可以使用 new 创建对象,但 self 和 index 是什么意思?
应该将self 视为java/C++ 中的this,索引是什么?
【问题讨论】:
-
self和:的函数定义在手册的Section 2.5.9 中进行了解释(以及在 PiL 等中)。__index在 Section 2.8 - Metatables 中解释。 -
@EtanReisner 所以我可以使用 : 代替使用 slef 作为第一个参数,对吧?
-
我不明白这个问题。当您使用
:定义函数时,“自动”获取一个 self 参数(作为第一个参数)。当您使用:调用函数时,:左侧的项目将“自动”作为第一个参数传递。 -
抱歉,我阅读了第 2.8 节,但仍然不明白 self 是什么意思或做什么
-
Lua 编程 一书讨论了这一点。您可能应该阅读它。第一版是免费在线的(尽管是为 lua 5.0 编写的,但仍然很重要)。
标签: lua