dearmb 发表于 2014-3-11 00:11:32

类似于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
怎么做?

58fly 发表于 2014-3-11 00:40:24

For $i = 1 to 10
    If $i = 7 Then
      $i = 1
   ContinueLoop
   endif
MsgBox(0, "$i 的当前值为:", $i)
Next

Ycxw2008 发表于 2014-3-11 02:06:43

换个思路嘛,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 08:42:17

本帖最后由 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循环

vuivui 发表于 2014-3-11 09:34:19

For $i = 1 to 10
MsgBox(0, "$i 的当前值为:", $i)
    If $i = 7 Then
      $i = 0
   ContinueLoop
   endif
Next

user3000 发表于 2014-3-11 12:00:54

这是死循环的节奏,何必这么麻烦,直接 while true 就OK了!

liangzz 发表于 2014-3-11 15:14:05

很简单,根据你的需要:“我想要当$i = 7 时,重新执行for $i = 7……而不是跳过for $i = 7去执行$i = 8”

那就直接修改i的值就得了,比如说if i=7 then i=6

因为根据for的运行机制,是先给i赋值然后判断是否超值,若否,则循环

skyfree 发表于 2014-3-11 15:30:08

其实我根本不明白的是,如果你i=7时重新执行本次循环,则只会造成死循环,而永远无法退出。不明用意。

vuivui 发表于 2014-3-11 16:03:45

关于死循环,相信楼主加个判断即可跳出。楼主讲的是某条件成立时重新循环,总有条件不成立的时候吧。

kevinch 发表于 2014-3-12 08:16:51

$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:46:50

本帖最后由 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]
查看完整版本: 类似于ContinueLoop 的功能,求助(已解决)