var = getglobal(varName) --getglobal deprecated var = _G[varName] --new syntax to get a global
setglobal(otherName, otherVar) --setglobal deprecated _G[otherName] = otherVar --new syntax to set a global
Description[edit | edit source]
Get a global variable, from a string.
local targetGlobal = getglobal("globalName")
Arguments[edit | edit source]
- String - Name of the global you want to get.
Returns[edit | edit source]
- The value from the given string, or nil if not found
Details[edit | edit source]
This function is used to get an object if you generate the name of the object manually in your script:
-- i = some_dynamic_number local curFrame = getglobal("myFrame"..i)
As of the introduction of getfenv() into the API (as well as direct access to the table _G as a global), setglobal() and getglobal() are somewhat superfluous. You can always do something along the lines of:
local _G = getfenv() local prevval = _G["MyVariable"] -- "getglobal()" _G["MyVariable"] = 1234 -- "setglobal()"
Function calls always cost some overhead, so if a large number of getglobal calls are being made, the global table will be a faster route. Note that for few or infrequent calls the performance gain of this method is negligible (but given the lack of any loss of functionality, recommended).
Note: Accessing the global table through the function getfenv() was common within addons presumably because the global '_G' (the direct global table) was hidden from the WoW environment. It seems to have since been uncovered, and now calling it directly for global access is possible:
local _G = _G -- a local speeds up access to _G slightly. negligible for infrequent calls. local prevval = _G["MyVariable"] -- "getglobal()"
_G["MyVariable"] = 1234 -- "setglobal()"