Итак, я пытаюсь написать функцию, которая принимает функции как свои параметры и устанавливает их как «объекты» в Lua , Есть ли определенный синтаксис для этого, о котором я не знаю?Передача функции в качестве переменной и назначение ее объекту, все еще способному ссылаться на «self» в Lua
local function createObjectWithMethods(method1, method2)
local object = {}
object.meth1 = method1
object:meth2 = method2 --this throws an error expecting parameters
return object
end
Есть ли другой способ этого? Я знаю, что я мог бы жестко кодировать метод для объекта, но этот код должен иметь функции, переданные как параметры, и некоторые из этих функций должны иметь возможность ссылаться на себя. Есть идеи?
Ну, это работает. Большое спасибо за быстрый ответ. – user2704305
Ключ здесь в том, что синтаксис создания функции ':' является просто синтаксическим сахаром для версии, которая включает 'self' в списке аргументов и что' obj: meth (...) 'вызывающий синтаксис является просто сахаром для' obj .meth (obj, ...) '(за исключением того, что' obj' оценивается только один раз). –
Фактически просто ссылаться на метод данного объекта и сделать его методом в другом объекте. Итак, для примера 'function obj: meth1' в начале этого ответа просто передайте' obj.meth1'. Независимо от того, какой синтаксис используется, вы должны знать, является ли функция методом или нет, когда вы вызываете ее. –