Skip to content

Instantly share code, notes, and snippets.

@lyuz1n
Last active June 29, 2020 02:35
Show Gist options
  • Select an option

  • Save lyuz1n/83e7fde34862140eff8739d2ca3e5d8f to your computer and use it in GitHub Desktop.

Select an option

Save lyuz1n/83e7fde34862140eff8739d2ca3e5d8f to your computer and use it in GitHub Desktop.
lua vector helper
--[[
Lua vector helper created by Lyµ
Discord: Lyµ#8767
]]
vector = {}
setmetatable(vector, {
__call = function(self, ...)
local obj = {...}
return setmetatable(obj, {__index = self})
end
})
function vector:front()
return self[1]
end
function vector:back()
return self[#self]
end
function vector:at(index)
return self[index]
end
vector.get = vector.at
function vector:empty()
return #self == 0
end
function vector:size()
return #self
end
function vector:clear()
for i = 1, #self do
self[i] = nil
end
end
vector.reset = vector.clear
function vector:emplace_back(element)
self[#self + 1] = element
end
function vector:emplace_front(element)
table.insert(self, 1, element)
end
function vector:erase(element)
for i = 1, #self do
if self[i] == element then
table.remove(self, i)
break
end
end
end
function vector:pop_back()
self[#self] = nil
end
function vector:pop_front()
self:erase(self[1])
end
function vector:rand()
return self[math.random(#self)]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment