__callメタメソッドを使用する方法
local ClassA = setmetatable({}, {
__call = function(cls, init)
local self = {}
-- localで変数を定義し、
-- クロージャー経由でアクセスする事でprivate化。
local private_field = init
function self.get()
return private_field
end
return self
end,
})
instanceA1 = ClassA(10)
instanceA2 = ClassA(20)
print(instanceA1.get())
print(instanceA2.get())
通常のメソッドを使用する方法
local function ClassB(init)
local self = {}
-- localで変数を宣言し、
-- クロージャー経由でアクセスする事でprivate化。
local private_field = init
function self.get()
return private_field
end
return self
end
instanceB1 = ClassB(10)
instanceB2 = ClassB(20)
print(instanceB1.get())
print(instanceB2.get())
[参考]
0 件のコメント:
コメントを投稿