是否可以在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