J'ai le scénario suivant dans lequel la position du code ne doit pas changer. Comment modifier ce code pour corriger l'erreur sans déplacer la fonction et la variable table. Je suis un nouveau venu Lua, juste 4 joursComment avoir une fonction comme valeur de champ dans une table lua, quand la fonction est déclarée à un point ultérieur?
function a()
print("function a");
end
ftable = {
["a"] = a,
["b"] = b
};
function b()
print("function b");
end
ftable["a"](); -- prints 'function a'
ftable["b"](); -- attempt to call field 'b' (a nil value)
Mise à jour: En utilisant le mécanisme suivant, il est possible de le faire.
function a()
print("function a");
end
ftable = {
["a"] = a,
["b"] = "b"
};
function b()
print("function b");
end
ftable["a"](); -- prints 'function a'
_G[ftable["b"]]();
ce n'est pas possible. vous devriez plutôt vous demander pourquoi vous voulez faire ceci en premier lieu ... vous pourriez assigner votre fonction à ftable.b si – Piglet
@Anish veuillez enlever votre réponse de la question et l'afficher comme réponse. Une fois que vous êtes satisfait des réponses, vous pouvez en accepter une, même si c'est la vôtre. (Le vôtre pourrait être amélioré en ajoutant une explication.) –
La dernière ligne devrait être 'ftable [_G [" b "]]()'. – lhf