我知道Lua中的「self」與Java中的「this」類似。 「this」表示Java中的當前對象,但我知道Java是面向對象的,而Lua是基於原型的。任何人都可以解釋爲什麼下面的代碼必須使用「self.last」而不是「self」來訪問鏈表的當前節點?謝謝。 :)在Lua中的類中使用self關鍵字
list = {}
list.__index = list
setmetatable(list, { __call = function(_, ...)
local t = setmetatable({length = 0}, list)
for _, v in ipairs{...} do t:push(v) end
return t
end })
function list:push(t)
if self.last then
self.last._next = t
t._prev = self.last
self.last = t
else
self.first = t
self.last = t
end
self.length = self.length + 1
end
儘管成員函數的語法糖命名隱含參數self,但'self'不是關鍵字,而是任何其他名稱。 – Deduplicator 2014-12-28 11:09:11