找回密码
 加入
搜索
查看: 4573|回复: 10

[AU3基础] 类似于ContinueLoop 的功能,求助(已解决)

  [复制链接]
发表于 2014-3-11 00:11:32 | 显示全部楼层 |阅读模式
本帖最后由 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
怎么做?
发表于 2014-3-11 00:40:24 | 显示全部楼层
For $i = 1 to 10
    If $i = 7 Then
      $i = 1
     ContinueLoop
   endif
MsgBox(0, "$i 的当前值为:", $i)
Next
发表于 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
 楼主| 发表于 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



    这个我也想过并且试过了,当$i=1时, ContinueLoop会跳出$i=1直接运行$=2
所以你这么写,会一直2,3,4,5,6循环
发表于 2014-3-11 09:34:19 | 显示全部楼层
For $i = 1 to 10
MsgBox(0, "$i 的当前值为:", $i)
    If $i = 7 Then
      $i = 0
     ContinueLoop
   endif
Next
发表于 2014-3-11 12:00:54 | 显示全部楼层
这是死循环的节奏,何必这么麻烦,直接 while true 就OK了!
发表于 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赋值然后判断是否超值,若否,则循环
发表于 2014-3-11 15:30:08 | 显示全部楼层
其实我根本不明白的是,如果你i=7时重新执行本次循环,则只会造成死循环,而永远无法退出。不明用意。
发表于 2014-3-11 16:03:45 | 显示全部楼层
关于死循环,相信楼主加个判断即可跳出。楼主讲的是某条件成立时重新循环,总有条件不成立的时候吧。
发表于 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
是这意思吧
 楼主| 发表于 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吧
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 03:34 , Processed in 0.101804 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表