gpt4 book ai didi

delphi - for-in 循环是否计算其集合部分一次?

转载 作者:行者123 更新时间:2023-12-03 14:52:27 29 4
gpt4 key购买 nike

我有一个函数,它生成一个数组作为其结果,并希望迭代其结果以执行一些操作:

for MyElm in AFunction(SomeVar) do
begin
//...
end;

由于集合部分是函数的结果,因此确保它仅执行一次非常重要。

问:AFunction 是否在每次迭代时执行?

最佳答案

该函数在 for 循环开始时仅计算一次。循环的开始或结束是否由函数定义都没有区别。

来自documentation :

For purposes of controlling the execution of the loop, the expressions initialValue and finalValue are evaluated only once, before the loop begins

如果是您的特定代码

for MyElm in AFunction(SomeVar) do
begin
//...
end;

在循环的第一次迭代中,编译器会插入对 GetEnumerator 的调用,以获取从函数调用返回的数组。然后,它开始在循环的每次迭代中调用枚举器的 GetNext 函数,只要它返回 true,它就会使用枚举器的 Current 从数组中读取值 属性。同样,该函数仅在循环的初始迭代中调用以检索数组。之后,每次传递都会调用数组的枚举器,以按顺序在数组本身中移动。

所以你的问题的答案是否定的。该函数不是“在其结果的每次迭代中执行”。该函数在循环开始时执行一次。

关于delphi - for-in 循环是否计算其集合部分一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21348067/

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