Kinda.
Lua defines it implicitly only when you use the
function foo:bar(a, b, c) -- note the colon
syntactic sugar, which gets translated to
function foo.bar(self, a, b, c) -- note the period
In all cases, self
is a regular variable name. You can even redeclare a new local with that name even when the old one is in scope.
Edit: some typos
Derp, I misread.