Lua 没有直接的对象。您可以像在 Java 中一样将它传递给函数,但不能指定类型。只需指定一个函数接受一个对象,然后传递它,就像 Java 一样。
这应该有助于 Lua 中的 OO。Lua 对象
Lua 中的每一个数据结构都是用一个表来实现的,所以你可以把所有的数据和函数放到一个表中,它的功能就像一个对象。
我还建议阅读整本书,Lua 有一些你可能不习惯的东西。
function newAccount (initialBalance)
local self = {
balance = initialBalance,
LIM = 10000.00,
}
local extra = function ()
if self.balance > self.LIM then
return self.balance*0.10
else
return 0
end
end
local getBalance = function ()
return self.balance + extra()
end
local withdraw = function (v)
self.balance = self.balance - v
end
local deposit = function (v)
self.balance = self.balance + v
end
return {
withdraw = withdraw,
deposit = deposit,
getBalance = getBalance
}
end
此函数采用初始余额参数。然后它会创建一个表格来保存选项的余额和限制。由于闭包,此表将始终保留,因为作为表返回的函数包含对其的引用。
self 中保存的对象和函数 extra 被认为是私有的,因为如果没有函数调用就无法访问它们,并且作为表返回的方法是公共方法。
这非常接近于 java 对象。你只需要使用一些 Lua 规则来使它像一个规则一样。即闭包和函数对象和表。