◆クラス
--------------------------------------- --Characterクラスの定義 --------------------------------------- Character = {} --Characterクラス --newメソッド function Character:new(_character) obj = {} --メンバ変数の定義と初期化 if _character then --コピーコンストラクタ的な処理 obj.name = _character.name obj.age = _character.age else --デフォルトコンストラクタ適な処理 obj.name = "" obj.age = 0 end --Characterのメソッドをobjに設定 --継承みたいな感じ self.__index = self setmetatable(obj, self) return obj end --setメソッド function Character:set(_name, _age) self.name = _name self.age = _age end --__tostringメタメソッドのオーバーライド function Character:__tostring() return "name:"..self.name.."\n".."age:"..self.age end --cloneメソッド function Character:clone() return Character:new(self) end ---------------------------------------- --クラスの使用 ---------------------------------------- c = Character:new() --オブジェクトの生成 c:set("suzuki", 12) --データの設定 d = Character:new(c) --コピーコンストラクタの使用 print("--c--") print(c) print("--d--") print(d) print("\n") c:set("suzuki_2", 24) d:set("yamada", 55) print("==c==") print(c) print("==d==") print(d) print("\n") e = d:clone() d:set("takeda", 77) print("##d##") print(d) print("##e##") print(e)
0 件のコメント:
コメントを投稿