【发布时间】:2023-04-02 07:56:01
【问题描述】:
我有一个 for 循环,其中我正在执行一些我只想最多执行 n 次的操作。到目前为止,我已经通过在循环中递增的局部变量来完成此操作,并且每次检查它是否超过了计数器限制。如果是,我就跳出循环。
for _,u in GetAllUnits() do
if not u:IsInCategory("STRUCTURE") and not u:IsInCategory("COMMAND") then
NameUnit(u)
nameCount = nameCount + 1
if nameCount >= maxUnitNames then break end
end
end
我对 Lua 很陌生,想知道是否有更好的方法来做到这一点。重要的是我最终不会创建表的副本或其他一些昂贵的操作。
请注意,_ 包含单元的 ID,因此不能使用它来代替计数器。
【问题讨论】:
-
您对目前的方法有什么顾虑?
-
您还可以更改 GetAllUnits() 以接受要返回的最大项目数作为参数。因此,您有效地移动 GetAllUnits() 中的“if ..break”代码
-
@tonypdmtr 呃,“全部”不是意味着不同的东西吗?
-
我觉得没有更好的办法了。
-
@tonypdmtr 即使 OP 可以修改
GetAllUnits,限制它返回的单位数量也可能会改变循环的结果,因为不会考虑类别条件(仅限nameCount计算不属于“结构”或“命令”类别的单位)。