1

単純な問題がありprintます。luaの関数に、「テーブル」という単語とメモリアドレスだけでなく、テーブルの内容を出力させたいのです。例えば:

> 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

print(tab)でも、毎回ループを書き出すのではなく、実行するだけで実現したいです。これはできますか?

4

2 に答える 2

3

作成したすべてのテーブルに__tostring()を設定する必要があります。より簡単な方法は、きれいな印刷技術を使用することです。

このリンクを参照してください:http://lua-users.org/wiki/TableSerialization

于 2012-10-12T17:21:23.070 に答える
1

tostring()これを行うには、グローバル関数をオーバーライドします。これがprint()その議論を要求するものです。

コーディングをしたくない場合は、 SteveDonovanによるMicrolightライブラリを試してみてください。次のように使用できます。

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}}
于 2012-10-13T14:41:49.153 に答える