Я использую Lua в качестве языка описания данных для своего приложения на C++. У меня есть куча классов C++, связанных с Lua, используя SLB 2.0. У меня есть методы, такие как «SetPos» или «SetName». Я указываю позицию или имя (например), используя таблицу со значениями, указанными как «pos» или «name». Я хочу иметь возможность взять ключ, добавить «набор» и вызвать метод, если он существует (он может и не быть). Это возможно? Если да, то какие-нибудь предложения?Может ли Lua поддерживать нечувствительный к регистру метод?
Я знаю, что мог бы сделать мои связанные методы нижним регистром, но я бы предпочел сохранить их такими же, как методы, к которым они привязаны (это может быть мой недостаток). Я мог бы попытаться создать имя метода на основе моих стандартов именования, но нечувствительность к регистру менее подвержена ошибкам.
Я чувствую, что должен быть быть сложным куском Lua, который мог бы решить это с помощью metatables, но я не смог самостоятельно его обработать.
Любые предложения?
Спасибо!
Я не знаком с SLB. У вас есть таблица, полная функций, которые каким-то образом связаны с вашим C++? Конечно, вы можете делать то, что хотите, если у вас есть таблица, полная функций, потому что вы можете определить метатежный метод '__index', чтобы сделать поиск в регистровом формате таблицы для соответствующего метода и вернуть его. Тем не менее, зачем вам это нужно? Функции Lua в целом чувствительны к регистру, поэтому я не вижу проблем с оставлением ваших функций как есть. –
Я бы * решительно * предложил принять и придерживаться политики согласованности, когда имена одинаковы (+/- префикс 'set') в обоих местах. –
Причина, по которой я хочу быть немного слабеющей, состоит в том, что если я сделаю ошибку в случае, я не буду знать, пока время исполнения. Очевидно, это не шоу-стоппер, но было бы неплохо. Что касается того, почему я хотел бы сделать это в первую очередь, я хочу взять переменную (name = "blah") в свой lua-файл (например, в массив определений) и сопоставить его с вызов метода (myObj.SetName («бла»)). –