我對使用luaxml解析XML字符串時看到的行爲感到困惑。 lua的文檔指出,調用印刷()上表變量這樣:爲什麼在調用print(sometable)時,Lua中的某些表顯示會有所不同?
print(type(t))
print(t)
會導致類似這樣的輸出:
t2: table
t2: table: 0095CB98
然而,當我使用luaxml這樣:
require "luaxml"
s = "<a> <first> 1st </first> <second> 2nd </second> </a>"
t = xml.eval(s)
print("t: ", type(t))
print("t: ", t)
我得到以下輸出:
t: table
t: <a>
<first>1st</first>
<second>2nd</second>
</a>
爲什麼print(t)
不會返回看起來像第一個示例的結果?
我懷疑這種性質的東西是這樣的,但不知道print()以這種方式表現。有沒有辦法在所討論的表格對象上「反射」(不確定這個術語是否有意義)以查看其metamethods? – Gerald 2010-08-21 05:08:36
我會回答我的問題,因爲你的答案上面使我一個解決方案: MT = getmetatable(T) 關鍵,價值成對(MT)做印刷(鍵,值)結束 將打印元方法... 和 setmetatable(t,nil)刪除它,如果需要的話 謝謝! -Gerald – Gerald 2010-08-21 05:19:22
順便說一句,如果有人讀這是使用luaxml請注意,由xml.eval()返回的表索引從0開始,而不是1。 – Gerald 2010-08-21 05:26:37