是否可以在Lua中打印表格而不使用metatables?在功能print
中总是调用tostring
来格式化它的输出。但是,如果我在我的桌子覆盖tostring
,然后我得到以下结果:在Lua中打印没有metatables的表格
> a = {}
> a.tostring = function() return "Lua is cool" end
> print(a)
table: 0x24038c0
是否可以在Lua中打印表格而不使用metatables?在功能print
中总是调用tostring
来格式化它的输出。但是,如果我在我的桌子覆盖tostring
,然后我得到以下结果:在Lua中打印没有metatables的表格
> a = {}
> a.tostring = function() return "Lua is cool" end
> print(a)
table: 0x24038c0
它不能没有metatable来完成。
功能
tostring
格式化它的输出。
您误会了这一点。这里,tostring
是函数tostring
,而不是表的字段。所以这意味着print(t)
将叫print(tosstring(t))
,就是这样。
对于表格,tostring(t)
然后会找到它是否有metamethod __tostring
,并使用它作为结果。所以最终,你仍然需要一个metatable。
local t = {}
local mt = {__tostring = function() return "Hello Lua" end}
setmetatable(t, mt)
print(t)
如果你调用'setmetatable(t,t)','__tostring'可以是't'中的一个字段。 – lhf
你是什么意思“打印表”?你的意思是在表格中打印每个键和值吗?你是否想在子表中打印键和值?在Lua中没有打印表格的“标准”方式,所以答案取决于你想要做什么。 –
获取一些序列化器并打印其输出。 – FareakyGnome