Lua usa il passaggio di parametri posizionali. Quindi non esiste un modo "naturale" per passare argomenti con nome . Puoi simularli girando questo:
--invalid code
rename(old="temp.lua", new="temp1.lua")
in questo:
rename{old="temp.lua", new="temp1.lua"}
utilizzando questo:
function rename (arg)
return os.rename(arg.old, arg.new)
end
Più in generale questo è noto come introduce il refactoring di parametri . Stai facendo la stessa cosa nella tua domanda, ma sei semplicemente più formale insistendo sulla parentesi.
In base a arity (il numero di argomenti) e leggibilità questi argomenti con nome simulato possono diventare davvero molto utili. Se l'arity è piccolo e il significato dei valori è ovvio senza guardare la definizione della funzione, allora la forma compatta va bene. Personalmente non avevo idea di cosa sarebbe stato {10, 10}, 3, right
fino a quando non ho guardato il tavolo. Anche se devo dire, un nome come Foo
non aiuta. La leggibilità è molto più importante del salvataggio di righe di codice.
@whatsisname è corretto su alcuni argomenti obbligatori e facoltativi di separazione, ma questo non è richiesto né universale. Ad esempio:
function Window (options)
-- check mandatory options
if type(options.title) ~= "string" then
error("no title")
elseif type(options.width) ~= "number" then
error("no width")
elseif type(options.height) ~= "number" then
error("no height")
end
-- everything else is optional
_Window(options.title,
options.x or 0, -- default value
options.y or 0, -- default value
options.width, options.height,
options.background or "white", -- default
options.border -- default is false (nil)
)
end
Vedi lua.org
Una cosa da fare attenzione: rendere ogni membro del tavolo utilizzato qualcosa di facile da individuare. Non seppellirne uno da qualche parte dove è facile non vederlo. Un'altra ragione per le funzioni brevi è buona.