如何遍历集合中的结果?

How to iterate through results in sets?

在我的桌面模拟器中 mod 我有一个包,当有东西掉进包里时,会调用 emptyContents() 函数。比如我可以在袋子里丢15个骰子。

emptyContents() 函数中,我遍历包中的对象。但是正如您所看到的,我必须放入多个 if 语句来捕捉放入的骰子数量,因为我希望骰子在不同的位置生成。

contents 变量是包中骰子的数量。

function emptyContents()
    contents = self.getObjects()

    for i, _ in ipairs(self.getObjects()) do
      if i <= 6 then
        self.takeObject(setPosition(5, -3))
      elseif i <= 12 then
        self.takeObject(setPosition(12.4,-5))
      elseif i <= 18 then
        self.takeObject(setPosition(19.8,-7))
      end
    end
end

如何使函数不那么静态?因为现在我需要为每组 6 个骰子编写 if 语句。

也许你可以添加这样的配置:

local t = {
    {6, 5, -3},
    {12, 12.4, -5},
    {18, 19.8, -7},
}

function emptyContents()
    contents = self.getObjects()

    for i, _ in ipairs(self.getObjects()) do
        for _, v in ipairs(t) do
            local l, p1, p2 = unpack(v)
            if i <= l then
                self.takeObject(setPosition(p1, p2))
                break
            end
        end
    end
end