1

我对使用 luaxml 解析 XML 字符串时看到的行为感到困惑。Lua 文档声明在表变量上调用 print() 如下:

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)返回看起来像第一个示例的结果?

4

2 回答 2

5

print函数用于tostring将其参数转换为字符串。

tostring用表调用时,表的元表有一个__tostring字段,然后tostring以表作为参数调用对应的值,并将调用的结果作为其结果。

我怀疑__tostringluaxml 在从xml.eval(s).

于 2010-08-21T04:35:45.607 回答
0

您可以在表的元表上定义函数__tostring以获得此结果。当你将该表传递给 print() 时,如果你的元表上有一个__tostring函数,print() 将输出评估该函数的结果,而不是使用默认方法(它只打印表的内存地址)。

于 2010-08-21T04:37:22.453 回答