Lua 상용 데이터 구조
3456 단어 lua
배열
lua 에서 정수 아래 표 시 된 방문 표 의 요 소 를 통 해 배열 을 간단하게 실현 할 수 있 습 니 다.또한 배열 은 미리 크기 를 지정 하지 않 아 도 되 고 크기 는 필요 에 따라 동적 으로 증가 할 수 있다.
a = {}
for i = 1,100 do
a[i] = 0
end
print("The length of array 'a' is " .. #a)
squares = {1, 4, 9, 16, 25}
print("The length of array 'a' is " .. #squares)
Lua 에서 습관 적 으로.
배열 의 아래 표 는 1 부터 시작 합 니 다. Lua 의 표준 라 이브 러 리 는 이 습관 과 일치 하기 때문에 배열 의 아래 표 도 1 부터 표준 라 이브 러 리 의 함 수 를 직접 사용 할 수 있 습 니 다. 그렇지 않 으 면 직접 사용 할 수 없습니다.
2. 2 차원 배열
Lua 에는 행렬 을 나타 내 는 두 가지 방법 이 있 는데 첫 번 째 는 배열 의 배열 로 표시 하 는 것 이다.즉, 한 표 의 요 소 는 다른 표 라 는 것 이다.
local N = 3
local M = 3
mt = {}
for i = 1,N do
mt[i] = {}
for j = 1,M do
mt[i][j] = i * j
end
end
mt = {}
for i = 1, N do
for j = 1, M do
mt[(i - 1) * M + j] = i * j
end
end
링크
Lua 에서 tables 를 사용 하면 체인 시 계 를 쉽게 실현 할 수 있 습 니 다. 모든 노드 는 하나의 table 이 고 지침 은 이 표 의 도 메 인 이 며 다른 노드 (table) 를 가리 키 고 있 습 니 다.예 를 들 어 두 개의 영역 만 있 는 값 과 포인터 의 기본 링크 를 실현 하려 면 코드 는 다음 과 같다.
list = nil
for i = 1, 10 do
list = { next = list ,value = i}
end
local l = list
while l do
--print(l.value)
l = l.next
end
4. 대열 과 양 방향 대열
Lua 의 table 라 이브 러 리 에서 제공 하 는 insert 와 reove 작업 을 사용 하여 대기 열 을 실현 할 수 있 지만, 이러한 방식 으로 실 현 된 대기 열 은 빅 데이터 양 에 대한 효율 이 너무 낮 습 니 다. 효과 적 인 방법 은 두 개의 색인 아래 표 시 를 사용 하 는 것 입 니 다. 하 나 는 첫 번 째 요 소 를 표시 하고 다른 하 나 는 마지막 요 소 를 표시 합 니 다.
List = {}
--
function List.new()
return {first = 0,last = -1}
end
--
function List.pushFront(list,value)
local first = list.first - 1
list.first = first
list[first] = value
end
--
function List.popFront(list)
local first = list.first
if first > list.last then
error("List is empty")
end
local value = list[first]
list[first] = nil
list.first = first + 1
return value
end
function List.popBack(list)
local last = list.last
if list.first > last then
error("List is empty")
end
local value = list[last]
list[last] = nil
list.last = last - 1
return value
end
--
local testList = {first = 0,last = -1}
local tableTest = 12
List.pushFront(testList,tableTest)
print( List.popFront(testList))
창고
스 택 기능 을 간단하게 실현 합 니 다. 코드 는 다음 과 같 습 니 다.
local stackMng = {}
stackMng.__index = stackMng
function stackMng:new()
local temp = {}
setmetatable(temp,stackMng)
return temp
end
function stackMng:init()
self.stackList = {}
end
function stackMng:reset()
self:init()
end
function stackMng:clear()
self.stackList = {}
end
function stackMng:pop()
if #self.stackList == 0 then
return
end
if self.stackList[1] then
print(self.stackList[1])
end
return table.remove(self.stackList,1)
end
function stackMng:push(t)
table.insert(self.stackList,t)
end
function stackMng:Count()
return #self.stackList
end
--
object = stackMng:new()
object:init()
object:push(1)
object:pop()
집합
Lua 에서 table 로 집합 을 실현 하 는 것 은 매우 간단 합 니 다. 다음 코드 를 보십시오.
reserved = {
["while"] = true, ["end"] = true,
["function"] = true, ["local"] = true,
}
for k,v in pairs(reserved) do
print(k,"->",v)
end
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Neovim을 위한 자동 완성NeoVim으로 생산성을 높일 수 있는 가장 멋진 기능 중 하나는 자동 완성이므로 성능에 따라 플러그인을 선택할 수 있습니다. YouCompleteMe Coc.nvim 이 플러그인은 사용하기 좋지만 Javascrip...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.