Les fonctions à nombre d'arguments variables

Des fonctions en Lua peuvent recevoir un nombre d’arguments variables comme print() :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
a = 2
b = 4
c = 6
-- On passe 3 paramètres
print(a, b, c)
-- On passe 1 seul paramètre
print(6)

-- output:
--  2    4    6
--  6

Pour récupérer ses arguments, il faut utiliser … :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function variadic(...)
  print(...)
end
variadic(1, 2, 3)
variadic("a", 2, "b")

-- output
--  a
--  2
--  b

Attention, aspire toutes les données restantes donc, il doit être mis en dernier paramètre lors de la déclaration de la fonction :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
function variadic(a, ...)
  print("variable a: " .. a)
  for _, v in ipairs{...} do
    print(v)
  end
end

variadic("b", "c", 2, 6, 4)

-- output:
--  variable a: b
--  c
--  2
--  6
--  4