• Question about self
    3 replies, posted
How does "self" exactly work? How does "self" know that it is "self", despite never being defined in the code?
I have only used self in metatables, but I don't think it can be applied to regular tables. What self essentially is an instance of a metatable passed as an invisible argument for functions that are like METATABLE:FUNCTION(), note the colon. If this is confusing just tell me and I will whip an example up.
[QUOTE=The Best;34248840]How does "self" exactly work? How does "self" know that it is "self", despite never being defined in the code?[/QUOTE] Its a reference to the space you are currently executing it in. It literally means 'myself', referring to the current 'object' its being called inside of. Its talked about a little [URL="http://www.lua.org/pil/16.html"]here[/URL]
Alright, so, for instance, you're writing code for a gamemode. Let's say your function is GM:Initialize. See the part before the :? GM? in that function, self = GAMEMODE. Or in SWEP:Deploy, self = SWEP. Get it? All self does is grab the object of the function you're working in. I'm pretty sure that if you did self:whatever outside of a function, then it would either be nil or G.
Sorry, you need to Log In to post a reply to this thread.