-- Функции могут быть локальны и возвращать несколько значений function f() return 1 end local function f() return 1,2,3 end -- Функции могут содержать неопределенные параметры function f(a, b, ...) end -- SAMPLE 1 printR = "" function printx(...) for i,v in ipairs{...} do printR = printR .. tostring(v) .. ", " end printR = printR .. "n" end printx('c','a','d','b') print("RES="..printR) -- SAMPLE 2 function fwrite (fmt, ...) return io.write(string.format(fmt, unpack(arg))) end -- Названия функций могут сразу попадать в таблицы a={}; a.b={} function a.b.f(p1,p2) print(p1,p2) end a.b.f = function (p1,p2) print(p1,p2) end a.b.f(3,4) -- 3 4 -- Функции могут принимать аргумент self (через :) a={b={}} function a.b:f(p1,p2) print(p1,p2) end a.b.f = function (self, p1, p2) print(p1,p2) end a.b.f(3, 4) -- 4 nil a.b:f(3, 4) -- 3 4 -- Дополнительные примеры function f(a, b) end function g(a, b, ...) end function r() return 1,2,3 end -- вызовы функций f(3) -- a=3, b=nil f(3, 4) -- a=3, b=4 f(3, 4, 5) -- a=3, b=4 f(r(), 10) -- a=1, b=10 f(r()) -- a=1, b=2 g(3) -- a=3, b=nil, ... --> (nothing) g(3, 4) -- a=3, b=4, ... --> (nothing) g(3, 4, 5, 8) -- a=3, b=4, ... --> 5 8 g(5, r()) -- a=5, b=1, ... --> 2 3 return ... -- вернуть все полученные аргументы a = {f(x,y,z)} -- взять список возвращаемых значений a = {f(),nil} -- взять только первый результат a = (f(x,y,z)) -- взять только первое значение, если функция возвращает список a,b,c = f(x)
Lua Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor