So, I'm trying to write a function which accepts functions as its parameters and sets them as 'object' methods in Lua. Is there a specific syntax for this of which I'm not aware?
local function createObjectWithMethods(method1, method2)
local object = {}
object.meth1 = method1
object:meth2 = method2 --this throws an error expecting parameters
return object
end
Is there another way to go about this? I know that I could hardcode a method for the object, but this code needs to have functions passed as parameters, and some of those functions need to be able to reference self. Any ideas?
You need to write the passed-in methods without the automagic self
syntax sugar.
That is you can't use:
function obj:meth1(arg1, arg2)
-- code that uses self
end
(unless these functions are defined on some other object and being cross-applied to the new object).
Instead you need to write what the above is sugar for yourself.
function meth1(self, arg1, arg2)
-- code that uses self
end
function meth2(self, arg1, arg2)
-- code that uses self
end
Then you can just call the function normally and assign the functions normally.
local function createObjectWithMethods(method1, method2)
local object = {}
object.meth1 = method1
object.meth2 = method2
return object
end
createObjectWithMethods(meth1, meth2)