4 votes

Comment obtenir les paramètres d'une fonction à partir d'une fonction passée en paramètre de ma fonction, en Lua ?

J'essaie de décorer plusieurs fonctions avec un décorateur de fonction, et je veux obtenir les paramètres d'une fonction que je vais décorer (dans ce cas, appelée fun dans les paramètres) et je veux passer comme argument à la fonction retournée (dans ce cas, appelée func ) les arguments de la fonction obtenue à partir des paramètres (ce qui s'appelle fun ) Cela peut donc ressembler à ceci :

local function decorator(fun)
  local function func(fun.args)
    -- Write here custom behaviour to add to the function 'fun'

    fun(fun.args)
  end

  return func
end

Cependant, il est évident qu'il n'existe pas de fun.args c'était juste une façon de vous expliquer avec plus d'exactitude ce que je veux. Gardez à l'esprit que je ne connais pas la fonction que je veux décorer, et que les fonctions que je veux décorer peuvent être différentes les unes des autres, donc ce serait un moyen d'AJOUTER un comportement personnalisé à une fonction (comme vous pouvez le voir dans l'exemple de code ci-dessus).

Alors, y a-t-il un moyen de faire ce dont j'ai besoin ?

3voto

Joseph Sible Points 7272

Lua supporte les varargs via ... . Dans votre cas, vous l'utiliseriez comme ceci :

local function decorator(fun)
  local function func(...)
    -- Write here custom behaviour to add to the function 'fun'

    fun(...)
  end

  return func
end

Et si vous voulez utiliser les arguments de la section "comportement personnalisé", vous pouvez faire ce qui suit local args = {...} puis de les accéder numériquement (par ex, args[1] contiendrait le premier argument).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X