1

それが最後のループサイクルかどうかを判断できるLuaのステートメントはありますか? タイムループが何回ループするか判断できない場合は?

例:

for _, v in pairs(t) do
if I_know_this_is_your_last_cycle then
-- do something
end
4

4 に答える 4

8

これはmissingnoの答えの簡略版です::-)

for _, v in pairs(t) do
  if next(t,_) == nil then
    -- do something in last cycle
  end
end
于 2013-04-04T18:52:58.160 に答える
1

あなたはおそらく次のようなものを書くことを試みることができます:

    --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
于 2013-04-04T18:47:21.440 に答える
0

これを行うにはいくつかの方法があります。最も簡単なのは、標準の 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
于 2013-04-04T18:40:50.433 に答える