Lua笔记16 __tostring

mt={}  --定义元表  ,注意:元表一般定义在table的一个函数中,然后将这个函数复制为另一个table,做为元表

function mt.__tostring(tb)  --定义__tostring 方法函数,返回的是一个字符串
	local l={}                    -- l 用来保存 集合中所有元素的table
	for k,v in pairs(tb) do
		l[#l+1]=v
	end
	return "{" .. table.concat(l,",") .. "}"     --返回是一个string 类型
	
end
	
function mt.__print(s)                  --调用print 来打印这个string 
	print(mt.__tostring(s))
end

tbA={"a","b","c","d"}

setmetatable(tbA,mt)     --[[返回的是一个table类型的变量]]

print(tbA)

print(type(mt.__tostring(tbA)))

print(type(setmetatable(tbA,mt)))


你可能感兴趣的:(Lua笔记16 __tostring)