一个元表定义了一组改变lua对象行为的操作。一个元表只是一个普通的表,它以一种特殊的方式使用。
local meta = { } -- create a table for use as metatable -- a metatable can change the behaviour of many things -- here we modify the 'tostring' operation: -- this fields should be a function with one argument. -- it gets called with the respective object and should return a string meta.__tostring = function (object) return string.format("{ %d, %d }", object.x, object.y) end -- create an object local point = { x = 13, y = -2 } -- set the metatable setmetatable(point, meta) -- since 'print' calls 'tostring', we can use it directly: print(point) -- prints '{ 13, -2 }'