[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: RE: . vs :
- From: "Virgil Smith" <Virgil@...>
- Date: Tue, 1 Jun 2004 10:44:57 -0500
Consider using an upvalue to hand you the "self" parameter.
For instance instead of...
MyMethods = {}
MyMethods:Func1 = function() do return self.x*self.y end
MyMethods:Func2 = function() do return self.x+self.y end
NewInst = {x=1, y=2, Func1 = MyMethods.Func1, Func2 = MyMethods.Func2}
Result = NewInst:Func1()
-- or, similarly
Result = NewInst.Func1(NewInst)
Try...
CreateInstance = function() do
local self = {x=1, y=2}
self.Func1 = function() do return self.x*self.y end
self.Func2 = function() do return self.x+self.y end
return self
end
NewInst = CreateInstance()
Result = NewInst.Func1()
-----
Of course arranging this via the C API is a bit more drawn out, but not
terribly difficult.
Also, I left out the part about double checking the parameter list if you
wish to allow the use of a :, but if you are defining the syntax for your
embedded script users rather than just telling them that its Lua then that
isn't even an issue.
-----Original Message-----
From: lua-bounces@bazar2.conectiva.com.br
[mailto:lua-bounces@bazar2.conectiva.com.br]On Behalf Of M vd Honing
Sent: Sunday, May 30, 2004 8:26 AM
To: lua@bazar2.conectiva.com.br
Subject: . vs :
Is it possible to automaticaly translate a . To : for function calling?
I know they do something different, but i do not like the use of two
different chars for what for the end user apears to be the same thing. I
cannot explain to them why setting a var requires a . and calling a function
requires a :
It is easier for them if they can use a . in both cases. See below:
Classvar:function()
Is the same as calling
Classvar.function1(Classvar)
Is there a way to tell lua to make it possible to use:
Classvar.function1()
And still do:
Classvar.function1(Classvar)