Несколько возвращаемых значений

Классы / Методы

local ListAssistant = {}
ListAssistant.__index = ListAssistant

function ListAssistant.new(data)
  return setmetatable({data = data},
                      ListAssistant)
end

-- return can give several values at once
function ListAssistant:get_first_last()
  local count = #self.data
  if count > 0 then
    return self.data[1], self.data[count]
  end
  return -1, -1
end

local assistant = ListAssistant.new({2, 3, 5})
-- Each value goes to its own variable
local first, last = assistant:get_first_last()
-- first = 2
-- last = 5

local empty = ListAssistant.new({})
local no_first, no_last = empty:get_first_last()
-- no_first = -1
-- no_last = -1

print("first = " .. first)
print("last = " .. last)
print("no_first = " .. no_first)
print("no_last = " .. no_last)