gpt4 book ai didi

delphi - 如何获取 "for in"循环中某个项目的索引?

转载 作者:行者123 更新时间:2023-12-03 15:21:04 26 4
gpt4 key购买 nike

以下代码可以工作,但它不像 for..in 循环那样干净/通用。

fInports: TArray<TMyClass>

for i:= low(fInPorts) to high(fInPorts) do begin
Port:= fInPorts[i];
Port.Left:= ARect.Left;
Port.Top:= ARect.Top + (Height div (NrInPorts+1)) * (i+1);
end; {for i}

for..in 循环更加清晰,但不允许我查看正在访问哪个项目。

for Port in fInPorts do begin
Port.Left:= ARect.Left;
Port.Top:= ARect.Top + (Height div (NrInPorts+1)) * index;
//how do I get the index? -------------------------^^^^^^^
end; {for}

我如何知道 for..in 循环当前正在处理数组中的哪一项?

最佳答案

for in 循环的重点是索引不应该是相关的。这是枚举器决定返回元素的顺序。枚举器可以更改返回元素的内部顺序,并且使用它的代码仍然可以工作。控件可以按类型、名称等进行排序。显然,在数组的情况下,编译器会按顺序返回数组的元素,但对于其他枚举器则不一定是这种情况。

如果您想要索引用于定位,那么正如 Jerry 所说,您必须创建一个索引并在代码中使用它。如果它是一个 TList,您可以作弊并使用 IndexOf,但从性能的角度来看,这会适得其反。

就我个人而言,我倾向于只谨慎使用 for in 循环,但这只是因为我是老派。我是个控制狂。

关于delphi - 如何获取 "for in"循环中某个项目的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com