【lua】小計setmetatable

1248 ワード

local base = {x = 5, y = 10, width = 100, height = 100}
base.__index = base
function base:new()
   local obj = {}
   setmetatable(obj, self)
   return obj
end

function base:Print()
   print('x:' .. self.x)
   print('y:'.. self.y)
   print('width:' .. self.width)
   print('height:'.. self.height)
end

local child = { color = 'red', size = 100 }
child.__index = child
setmetatable(child, base)

function child:new(color, size)
   local obj = base:new()
   setmetatable(obj, self)
   obj.color = color
   obj.size = size
   return obj
end

function child:Print()
   print('x:' .. self.x)
   print('y:'.. self.y)
   print('width:' .. self.width)
   print('height:'.. self.height)

   print('color:' .. self.color)
   print('size' .. self.size)
end

local c = child:new('blue', 1000)
c:Print()

local b = base:new()
b:Print()


 
ずっとluaの中のmetatableについてよく知らなかったので、今日試してみましたが、思ったほど難しくはありませんでした.