Printing lua重载表\uuuu tostring函数

Printing lua重载表\uuuu tostring函数,printing,lua,Printing,Lua,我有一个简单的问题:我想让lua中的print函数打印表的内容,而不仅仅是单词表和内存地址。例如: > tab = {} > tab[1]="hello" > tab[2]="there" > > print(tab) table: 0x158ab10 --should be 1 hello 2 there 我知道我可以通过执行以下操作来获得这种效果: for i,v in pairs(tab) do print(i,v) end 但我希望它只在执行

我有一个简单的问题:我想让lua中的print函数打印表的内容,而不仅仅是单词表和内存地址。例如:

> tab = {}
> tab[1]="hello"
> tab[2]="there"
> 
> print(tab)
table: 0x158ab10
--should be 
1   hello
2   there
我知道我可以通过执行以下操作来获得这种效果:

for i,v in pairs(tab) do print(i,v) end

但我希望它只在执行printtab时发生,而不必每次都写一个循环。可以这样做吗?

您需要在创建的每个表上设置uu-tostring。更简单的方法是使用漂亮的打印技术


请参阅此链接:

您需要在创建的每个表上设置uu-tostring。更简单的方法是使用漂亮的打印技术


请参阅此链接:

您可以通过重写全局tostring函数来完成此操作。这就是print对其参数的调用

如果您不想进行任何编码,请尝试Steve Donovan的库。您可以按如下方式使用它:

tostring = require "ml".tstring
tab = {"abc", 3.14, print, key="value", otherkey={1, 2, 3}}
print(tab) --> {"abc",3.14,function: 0x7f5a40,key="value",otherkey={1,2,3}}

可以通过重写全局tostring函数来实现这一点。这就是print对其参数的调用

如果您不想进行任何编码,请尝试Steve Donovan的库。您可以按如下方式使用它:

tostring = require "ml".tstring
tab = {"abc", 3.14, print, key="value", otherkey={1, 2, 3}}
print(tab) --> {"abc",3.14,function: 0x7f5a40,key="value",otherkey={1,2,3}}

仅供参考:打印主要用于调试目的。如果您需要认真处理打印数据,您需要使用正确的IO例程。@Nicolas是否愿意详细说明正确的IO例程?仅供参考:打印主要用于调试目的。如果您需要认真处理打印数据,您需要使用正确的IO例程。@Nicolas想详细说明正确的IO例程吗?