gpt4 book ai didi

loops - 使用 AT FIRST 初始化循环变量

转载 作者:行者123 更新时间:2023-12-01 08:58:37 26 4
gpt4 key购买 nike

似乎控制级处理的 AT FIRST 语句非常适合任何必须运行的命令或必须在循环本身开始运行之前初始化的变量。鉴于 AT 命令如何清除工作区中的列,这是我仍然看到的少数用途之一。

为了说明,而不是这样做:

CLEAR lv_loopcounter.
LOOP AT lt_itab INTO ls_wa.
ADD 1 TO lv_loopcounter.
...
ENDLOOP.

我们可以这样做:

LOOP AT lt_itab INTO ls_wa.
AT FIRST.
CLEAR lv_loopcounter.
ENDAT.
ADD 1 TO lv_loopcounter.
...
ENDLOOP.

这里很明显,需要初始化变量才能使循环按预期运行。当您有很多需要在循环之前运行的语句时,它还可以使代码看起来更清晰。我看到的唯一缺点是,它在逻辑上不应该在 LOOP 语句中移动代码。

这里有最佳实践吗?是否有我应该注意的隐藏警告?

最佳答案

这两种变体都是可能的,但是它们在语义上是不同的:在第一个版本中,命令 CLEAR 是无条件执行的,在第一个版本中,它仅在 lt_itab 时执行> 至少包含一行。对于实际的循环实现,差异无关紧要,但对于空表,在到达 ENDLOOP 语句后,有问题的变量的值会有所不同。只要您明智地处理空表,这不是问题... :-)

第二个版本唯一的另一个小警告是 AT FIRST 将清除 ls_wa 的所有非字符字段并设置 ls_wa 的所有字符字段 到 '*'。

关于loops - 使用 AT FIRST 初始化循环变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23562114/

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