テーブルの中身を全部ぶちまける構文

Lua を使ってみようより。

local t = {apples="林檎", banana="バナナ", grapes="グレープ"}

こういうテーブルtがあったとして、その中身を全部出すには。

その1:基本

for k, v in pairs(t) do hoge(k, v) end

forとpairsを使ったごく普通のやり方。

その2:応用

k, v = next(t)
while k do hoge(k, v); k, v = next(t, k) end

書き換え。nextを使う利点は、たとえばテキストを改行で区切ってテーブルにした物で、複数の行でひとつのデータを構成する場合などにいけると思う。
カードゲームのカードリストのテキストがあったとして、これが、カード毎の区切りが連続する改行二つだったとすると、分割が容易になる。

その3:リファレンス外

function output(k, v) (something) end
table.foreach(t, output)

table.foreachの第一引数にはテーブルを、第二引数には関数を渡す。
これは下記とほぼ等しい。(ほぼなのは、検証をしていないから)

function output(k, v) (something) end
for k, v in pairs(t) do output(k, v) end

ただし、http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.htmlには、

関数 table.foreach および table.foreachi は廃止された。ループには代わりに pairs または ipairs を使う。

とある。実際要らないと言えば要らない……。
後方互換性のために実際にはまだ使えるのか、NSLuaで使われているLuaのバージョンがアレなのか。