类似于ContinueLoop 的功能,求助(已解决)
本帖最后由 dearmb 于 2014-4-5 08:52 编辑For $i = 1 to 10
If $i = 7 Then ContinueLoop
MsgBox(0, "$i 的当前值为:", $i)
Next
我的本意是,当某条件成立时,重新执行本段循环
但是ContinueLoop是跳过本段循环执行下一步循环
比如这个例子,我想要当$i = 7 时,重新执行for $i = 7……
而不是跳过for $i = 7去执行$i = 8
怎么做? For $i = 1 to 10
If $i = 7 Then
$i = 1
ContinueLoop
endif
MsgBox(0, "$i 的当前值为:", $i)
Next 换个思路嘛,While 也行噻
Local $bool,$I = 0
While $I < 11
If $I = 7 Then
ConsoleWrite( '(' & @ScriptLineNumber & ') : $I = ' & $I & @crlf )
If Not $bool Then
$bool = True
ContinueLoop
EndIf
EndIf
$I+=1
WEnd 本帖最后由 dearmb 于 2014-3-11 09:14 编辑
For $i = 1 to 10
If $i = 7 Then
$i = 1
ContinueLoop
endif
MsgBox(0, "$i 的当前 ...
58fly 发表于 2014-3-11 00:40 http://www.autoitx.com/images/common/back.gif
这个我也想过并且试过了,当$i=1时, ContinueLoop会跳出$i=1直接运行$=2
所以你这么写,会一直2,3,4,5,6循环 For $i = 1 to 10
MsgBox(0, "$i 的当前值为:", $i)
If $i = 7 Then
$i = 0
ContinueLoop
endif
Next 这是死循环的节奏,何必这么麻烦,直接 while true 就OK了! 很简单,根据你的需要:“我想要当$i = 7 时,重新执行for $i = 7……而不是跳过for $i = 7去执行$i = 8”
那就直接修改i的值就得了,比如说if i=7 then i=6
因为根据for的运行机制,是先给i赋值然后判断是否超值,若否,则循环 其实我根本不明白的是,如果你i=7时重新执行本次循环,则只会造成死循环,而永远无法退出。不明用意。 关于死循环,相信楼主加个判断即可跳出。楼主讲的是某条件成立时重新循环,总有条件不成立的时候吧。 $pass=false
For $i = 1 to 10
MsgBox(0, "$i 的当前值为:", $i)
If $i = 7 And Not $pass Then
$i-=1
$pass=True
EndIf
Next是这意思吧 本帖最后由 dearmb 于 2014-3-12 11:49 编辑
我只是拿这段代码举例子
我的的想法是,当$i=7的时候,说明这段代码执行错误了,因为$i=7不是我想要的结果
当出现错误的时候,重头再执行这段代码,然后再检查$i是否等于7
当$i不等于7的时候,说明代码执行正确了,跳出这个循环
For下面的一条语句会检查当时的情况,可能会和上一次的循环的情况不一样
我只是拿这段代码举个例子
For $i = 1 to 10
If $i = 7 Then ContinueLoop
MsgBox(0, "$i 的当前值为:", $i)
Next
我试试while吧
页:
[1]