J'utilise Lua comme langage de description de données pour mon application C++. J'ai un tas de classes C++ liées à Lua en utilisant SLB 2.0. J'ai des méthodes liées telles que 'SetPos' ou 'SetName'. Je spécifie la position ou le nom (par exemple) en utilisant une table avec des valeurs entrées comme 'pos' ou 'name'. Je veux être en mesure de prendre la clé, préfixer 'set', et appeler la méthode, si elle existe (il peut ne pas). Est-ce possible? Si oui, des suggestions?Can Lua prend en charge les appels de méthode insensible à la casse?
Je sais que je pourrais faire mes méthodes liées minuscules, mais je préfère les garder les mêmes que les méthodes auxquelles ils sont liés (ce qui peut être mon retour si). Je pourrais essayer de construire le nom de la méthode en fonction de mes normes de dénomination, mais l'insensibilité à la casse est moins sujette aux erreurs.
Je pense qu'il devrait être un morceau difficile de Lua qui pourrait résoudre ce problème en utilisant des métabalises, mais je n'ai pas été capable de le faire moi-même.
Des suggestions?
Merci!
Je ne suis pas familier avec SLB. Avez-vous une table pleine de fonctions qui sont liées à votre C++? Il est certainement possible de faire ce que vous voulez si vous avez une table pleine de fonctions, car vous pouvez définir la méthode metatable '__index' pour faire une recherche insensible à la casse de votre table pour une méthode correspondante et la retourner. Cela dit, pourquoi avez-vous même besoin de cela? Les fonctions Lua en général sont sensibles à la casse, donc je ne vois aucun problème à laisser vos fonctions telles quelles. –
Je suggérerais * fortement * d'adopter et de suivre une politique de cohérence où les noms sont exactement les mêmes (+/- le préfixe 'set') aux deux endroits. –
La raison pour laquelle je veux être un peu laxiste avec le cas est que si je fais une erreur dans le cas, je ne connaîtrai pas le temps d'exécution. De toute évidence pas un spectacle, mais ce serait bien. Quant à savoir pourquoi je voudrais le faire en premier lieu, la raison en est que je veux prendre une variable (name = "blah") dans mon fichier lua (par exemple dans un tableau de définitions), et le mapper à un appel à une méthode (myObj.SetName ("blah")). –