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

[原创] 【ExitLoop】 参数(等级)详解

 火.. [复制链接]
发表于 2012-3-14 11:19:41 | 显示全部楼层 |阅读模式
本帖最后由 lixiaolong 于 2012-3-14 21:07 编辑

大家也知道【ExitLoop】是终止 While 或 Do 或 For 循环.
ExitLoop是非常有用的,但是一般使用ExitLoop都不用参数.

帮助文档里也没有详细说明,我想很多朋友都不知道这个参数是干什么的.
所以在这里给大家介绍一下,留个记录.

ExitLoop
--------------------------------------------------------------------------------

终止 While 或 Do 或 For 循环.

ExitLoop [等级]
       
[等级]
        0 = 不会有任何效果.
        1 = 默认为 1(表示当前循环).
        2以上 = 退出多个循环.


这个等级是使用多个循环时候非常有用,如果代码中检查出错时可以退出多个循环.

例子:
For $s = 0 To 99; 第一个循环
        For $i = 0 To 99; 第二个循环
                $file = FileOpen('lixiaolong') ;指定不存在的文件试试.
                
;~                 If $file = -1 Then ExitLoop ;退出当前循环,相当于 ExitLoop 1,继续实行第一个循环.
                If $file = -1 Then ExitLoop 2 ;退出2个循环,不再实行第一个循环.
        Next
        MsgBox(0, '', '如果For $i 没有出错实行这个')
Next

If $s <> 100 Then MsgBox(0,0,'发生错误')
Exit


例子2 请看ConsoleWrite输出的循环动作:
$a = 0

While 1
        ConsoleWrite('Loop 1' & @CRLF)
        While 2
                ConsoleWrite('Loop 2' & @CRLF)
                While 3
                        ConsoleWrite('Loop 3' & @CRLF)
                        While 4
                                $a += 1
                                ConsoleWrite('Loop 4' & @CRLF)
                                If $a = 5 Then
                                        MsgBox(0, 0, 'ExitLoop 0')
                                        ConsoleWrite('===ExitLoop 0===' & @CRLF)
                                        ExitLoop 0 ;没有任何效果
                                ElseIf $a = 10 Then
                                        MsgBox(0, 0, 'ExitLoop 1')
                                        ConsoleWrite('===ExitLoop 1===' & @CRLF)
                                        ExitLoop 1 ; 退出While 4
                                ElseIf $a = 30 Then
                                        MsgBox(0, 0, 'ExitLoop 2')
                                        ConsoleWrite('===ExitLoop 2===' & @CRLF)
                                        ExitLoop 2 ; 退出While 3,While 4
                                ElseIf $a = 50 Then
                                        MsgBox(0, 0, 'ExitLoop 3')
                                        ConsoleWrite('===ExitLoop 3===' & @CRLF)
                                        ExitLoop 3 ; 退出While 2,While 3,While 4
                                ElseIf $a = 70 Then
                                        MsgBox(0, 0, 'ExitLoop 4')
                                        ConsoleWrite('===ExitLoop 4===' & @CRLF)
                                        ExitLoop 4 ; 退出While 1,While 2,While 3,While 4
                                EndIf
                        WEnd
                WEnd
        WEnd
WEnd

MsgBox(0, 0, '退出了所有循环')


*ContinueLoop 的循环等级也一样.
For $i = 0 To 100
        MsgBox(0,$i,'我是第一个循环')
        For $s = 1 To 10
                If $s = 7 Then ContinueLoop 2
                MsgBox(0, "$i 的当前值为: ", $i)
        Next
Next
Exit


用了这个等级有什么好处那?大家用了就明白.
发表于 2012-3-14 11:55:45 | 显示全部楼层
记下了!多谢分享!
发表于 2012-3-14 13:58:31 | 显示全部楼层
LZ辛苦了,感谢分享
发表于 2012-3-14 16:48:32 | 显示全部楼层
我知道差距来自哪了,原来是学习方法的问题
发表于 2012-3-14 20:33:39 | 显示全部楼层
这些帮助上面没有的资料的确是宝贵的。
发表于 2012-3-14 20:48:17 | 显示全部楼层
ExitLoop 不是函数,函数的调用语法是XXX(param1, param2, param3, ...),即,函数名(参数1, 参数2, 参数3, ...)。判断是不是函数,看能否不带括号就行了,能够不带括号就能引用/调用的,都不叫函数,叫“语句”。

评分

参与人数 2金钱 +10 贡献 +5 收起 理由
user3000 + 10 赞个!
lixiaolong + 5 谢谢指教!

查看全部评分

 楼主| 发表于 2012-3-14 21:12:27 | 显示全部楼层
回复 6# pusofalse

谢谢指点,非常感谢!一直以为是函数。。。
发表于 2012-3-15 10:47:25 | 显示全部楼层
呵呵,ExitLoop是属于关键字/语句范围!!!
我也来一段代码:看LZ的代码是否成立?
For $s = 0 To 2; 第一个循环
        For $i = 0 To 3; 第二个循环
                $file = FileOpen('lixiaolong') ;指定不存在的文件试试.
                
             If $file = -1 Then ExitLoop ;退出当前循环,相当于 ExitLoop 1,继续实行第一个循环.
                ;If $file = -1 Then ExitLoop 2 ;退出2个循环,不再实行第一个循环.
        Next
        MsgBox(0, '', '如果For $i 没有出错实行这个')
Next
 
If $s <> 4 Then MsgBox(0,0,'发生错误')
Exit
发表于 2012-3-15 11:03:53 | 显示全部楼层
向小龙学习了,总结的很好!
发表于 2012-3-22 23:44:13 | 显示全部楼层
这些帮助上面没有的资料的确是宝贵的。
发表于 2012-3-29 16:27:38 | 显示全部楼层
回复 1# lixiaolong
小龙的东西,就是精彩!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-5 19:28 , Processed in 0.074890 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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