local Quantity local metatable = { __tostring = function (self) return ("Quantity{%d, %q}"):format(self.amount, self.material) end, } function Quantity (obj) return setmetatable({amount=obj.amount or obj[1], material=obj.material or obj[2]}, metatable) end return Quantity