__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 件のコメント:
コメントを投稿