2
루아에서 배열의 일부를 선택하고 싶습니다. [1] 아래의 작동 예는 파이썬 번째 요소루아에서 배열 하위 요소
a = { 1, 2, 3}
print(a)
b = {}
for i = 2, table.getn(a) do
table.insert(b, a[i])
end
print(b)
에서 선택한다. 루아는 비슷한 구문을 사용합니까?
루아에서 배열의 일부를 선택하고 싶습니다. [1] 아래의 작동 예는 파이썬 번째 요소루아에서 배열 하위 요소
a = { 1, 2, 3}
print(a)
b = {}
for i = 2, table.getn(a) do
table.insert(b, a[i])
end
print(b)
에서 선택한다. 루아는 비슷한 구문을 사용합니까?
루아에는 유사한 구문이 없습니다. 그러나, 당신은 쉽게 자신의 기능을 정의하여이 논리를 쉽게 감쌀 수 있습니다. 이 bar
-foo
의 요소의 얕은 복사본임을
local function slice (tbl, s, e)
local pos, new = 1, {}
for i = s, e do
new[pos] = tbl[i]
pos = pos + 1
end
return new
end
local foo = { 1, 2, 3, 4, 5 }
local bar = slice(foo, 2, 4)
for index, value in ipairs(bar) do
print (index, value)
end
참고.
또는 루아 5.2 당신은 table.pack
및 table.unpack
를 사용할 수 있습니다.
local foo = { 1, 2, 3, 4, 5 }
local bar = table.pack(table.unpack(foo, 2, 4))
매뉴얼을 가지고 있지만이 대답 :
table.pack을 (···)
키 1, 2 등 및에 저장된 모든 매개 변수를 사용하여 새 테이블을 돌려줍니다 전체 매개 변수 수와 "n"필드가 있습니다. 결과 테이블은 시퀀스가 아닐 수 있습니다.
루아 5.3 table.move
을 가지고 있지만
local foo = { 1, 2, 3, 4, 5 }
local bar = table.move(foo, 2, 4, 1, {})
는 그리고 마지막으로, 대부분의 아마이 이상 OOP 추상화의 어떤 종류를 정의하는 것을 선택할 것이다.
local list = {}
list.__index = list
function list.new (o)
return setmetatable(o or {}, list)
end
function list:append (v)
self[#self + 1] = v
end
function list:slice (i, j)
local ls = list.new()
for i = i or 1, j or #self do
ls:append(self[i])
end
return ls
end
local foo = list.new { 1, 2, 3, 4, 5 }
local bar = foo:slice(2, 4)
'''table.getn (t)''을 사용하지 마십시오.''''# t''를 사용하십시오. – warspyking