lixiaolong 发表于 2012-3-14 11:19:41

【ExitLoop】 参数(等级)详解

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

用了这个等级有什么好处那?大家用了就明白.

fuldho 发表于 2012-3-14 11:55:45

记下了!多谢分享!

80ren 发表于 2012-3-14 13:58:31

LZ辛苦了,感谢分享

502762378 发表于 2012-3-14 16:48:32

我知道差距来自哪了,原来是学习方法的问题

jsdn2000 发表于 2012-3-14 20:33:39

这些帮助上面没有的资料的确是宝贵的。

pusofalse 发表于 2012-3-14 20:48:17

ExitLoop 不是函数,函数的调用语法是XXX(param1, param2, param3, ...),即,函数名(参数1, 参数2, 参数3, ...)。判断是不是函数,看能否不带括号就行了,能够不带括号就能引用/调用的,都不叫函数,叫“语句”。

lixiaolong 发表于 2012-3-14 21:12:27

回复 6# pusofalse

谢谢指点,非常感谢!一直以为是函数。。。{:face (207):}

lchl0588 发表于 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

haijie1223 发表于 2012-3-15 11:03:53

向小龙学习了,总结的很好!

jy010 发表于 2012-3-22 23:44:13

这些帮助上面没有的资料的确是宝贵的。

newuser 发表于 2012-3-29 16:27:38

回复 1# lixiaolong
小龙的东西,就是精彩!
页: [1]
查看完整版本: 【ExitLoop】 参数(等级)详解