私は最初の引数としてファイルハンドルを取るデバッグプリント関数を作成しようとしています。まず、私はこのような関数を書く:Luaでは、nilを含むvarargsを扱う正しい方法は何ですか?
function fprint (f, ...)
for i, v in ipairs{...} do
f:write(tostring(v))
f:write("\t")
end
f:write("\n")
end
この機能は、限り、私は、引数にnil
値を渡さないように動作します。しかし、私がnil
でこれを呼び出すと、nil
の値と残りの引数が表示されません。
fprint(io.stderr, 1, 2, nil, 3)
=> prints only 1 and 2
この問題を解決する正しい方法は何ですか?
甘い!私は '選択'について知りませんでした。 – torus
最も有用な追加点は、テーブルを単に '解凍'できないことです。解凍するには: 'local tbl = {n = select("# "、...)、...}; print(unpack(tbl、1、tbl.n)); ' – Aidiakapi
この回答は公式ウィキで詳しく議論されました:http://lua-users.org/wiki/VarargTheSecondClassCitizen –