Вам просто нужно написать:
global_function_1 = function (arg)
-- body
end
или использовать альтернативу сахара syntacti c:
function global_function_2 (arg)
-- body
end
Убедитесь, что та часть, в которой вы делаете, не соответствует иметь локальную переменную с выбранным именем. Например, none из следующих функций являются глобальными:
local bar
local function foo (arg)
local zee
function arg () end
zee = function () end
function bar () end
end
Обратите внимание, что я полностью проигнорировал присвоение членам таблицы и игнорировал существование _G
и _ENV
, и давайте оставьте это так.
Я думаю, что стоит упомянуть, что string.gsub
(или на самом деле любой вызов функции) не волнует, когда функция (или любой аргумент) является локальной или любой другой:
local str = "abc"
local function fn (x) print(x) end
string.gsub(str, "%a", fn)
выходы:
a
b
c