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 ルールのいくつかを使用して、Lua ルールのように動作させる必要があります。つまり、クロージャーと関数オブジェクトとテーブルです。