Estoy intentando crear una función de impresión de depuración que toma un identificador de archivo como primer argumento. En primer lugar, escribo una función como esta:En Lua, ¿cuál es la forma correcta de manejar varargs que contiene nil?
function fprint (f, ...)
for i, v in ipairs{...} do
f:write(tostring(v))
f:write("\t")
end
f:write("\n")
end
Esta función funciona siempre y cuando no paso nil
valor en argumentos. Pero si llamo esto con un nil
, no imprime el valor nil
y el resto de los argumentos.
fprint(io.stderr, 1, 2, nil, 3)
=> prints only 1 and 2
Entonces, ¿cuál es la forma correcta de resolver este problema?
¡Dulce! No sabía sobre 'seleccionar'. – torus
Una adición muy útil es que ya no se puede 'descomprimir 'la tabla. Para desempaquetar use: 'local tbl = {n = select (" # ", ...), ...}; print (unpack (tbl, 1, tbl.n)); ' – Aidiakapi
Esta respuesta fue discutida en detalle en la wiki oficial: http://lua-users.org/wiki/VarargTheSecondClassCitizen –