Я думаю о том, как спроектировать свои API, я планирую иметь приложение C++ со слоем сценариев в LUA.
Для нескольких ключевых моментов в моем дизайне я хотел бы дать пользователю возможность создать объект функции, который представляет то, что он хочет сделать в LUA, а затем отправить этот объект функции из LUA в C/C++.
В псевдокоде на С++ у меня есть class T
class T {
...
int num1 = 0;
float num2 = 0.0f;
std::string str{"NONE"};
...
};
И я хотел бы манипулировать экземпляром T с function object, предоставленным LUA, вот так
void applyFunc(T t,F f){
f(t);
}
Проблема в том, что я не могу найти в LUA ничего, что создавало бы функциональный объект, такой как лямбда C++11 или std::function, или любой другой объект, который можно считать функциональным объектом.
На самом деле я хочу сказать: как определить объект функции, совместимый с C++, в LUA?
function? Насколько я знаю, это больше похоже на старую простую функциюC. 22.02.2014tи позволяет ему вызывать для нее документированные методы. Lua позволяет это, используя позднее связывание, если хотите. Вам просто нужно написать связующий код на стороне C параметраuserdatat. 22.02.2014Cили указатель на функцию, мне нужен функциональный объект, что-то вроде лямбда C++ 11, пожалуйста, прочитайте вопрос. Ваши посты и комментарии интересны, но все они ОТ. 22.02.2014f(t) на самом деле означает. Да, вы можете передатьt(объект C++) вf(функция Lua), но вы должны предоставитьfвозможность манипулироватьtиз Lua, иначе это совершенно бесполезно. Кажется, что ваши глаза тускнеют, когда вы видите, что объект C++ привязывается к Lua, но это именно то, что вам нужно. Без него вы не сможете реализоватьapplyFunc. 23.02.2014