それが最後のループサイクルかどうかを判断できるLuaのステートメントはありますか? タイムループが何回ループするか判断できない場合は?
例:
for _, v in pairs(t) do
if I_know_this_is_your_last_cycle then
-- do something
end
これはmissingnoの答えの簡略版です::-)
for _, v in pairs(t) do
if next(t,_) == nil then
-- do something in last cycle
end
end
あなたはおそらく次のようなものを書くことを試みることができます:
--count how many elements you have in the table
local element_cnt = 0
for k,v in pairs(t) do
element_cnt = element_cnt + 1
end
local current_item = 1
for k,v in pairs(t)
if current_item == element_count then
print "this is the last element"
end
current_item = current_item + 1
end
またはこれ:
local last_key = nil
for k,v in pairs(t) do
last_key = k
end
for k,v in pairs(t) do
if k == last_key then
--this is the last element
end
end
これを行うにはいくつかの方法があります。最も簡単なのは、標準の for ループを使用して、次のように自分で確認することです。
local t = {5, nil, 'asdf', {'a'}, nil, 99}
for i=1, #t do
if i == #t then
-- this is the last item.
end
end
または、次のように、最後のアイテムにいることを知らせるテーブルの独自のイテレータ関数をロールすることもできます。
function notifyPairs(t)
local lastItem = false
local i = 0
return
function()
i = i + 1
if i == #t then lastItem = true end;
if (i <= #t) then
return lastItem, t[i]
end
end
end
for IsLastItem, value in notifyPairs(t) do
if IsLastItem then
-- do something with the last item
end
end