蓝袍道士 发表于 2012-6-17 17:36:58

在自定义函数中用ContinueLoop为什么会出错?[已解决]

本帖最后由 蓝袍道士 于 2012-6-18 06:36 编辑

Dim $png
For $i = 1 To 12
        MsgBox(0, $i, $png)
;~         For $png = 1 To 12
;~         If $png = 3 Then ContinueLoop 2
;~         Next
        ;放在这里跳转就可以
        xh();循环跳试验
       
Next

Func xh();循环跳试验
        For $png = 1 To 12
        If $png = 3 Then ContinueLoop 2;这里执行就出错
        Next
EndFunc   ;==>xh这样做行不通的话,求其他方法实现这种目的。

happytc 发表于 2012-6-17 18:12:25


蓝袍道士 发表于 2012-6-17 17:36 http://www.autoitx.com/images/common/back.gif


    先比较深入点了解什么是‘作用域’吧

不过这点au3为了降低学习难度,把很多的概念都不提也不说,但其实au3也是用上的

afan 发表于 2012-6-17 18:34:03

xh() 函数内部只有1层循环,何来 ContinueLoop 2 ?

xms77 发表于 2012-6-17 19:10:02

1来:就一层循环为什么要continueloop 2
2来:循环里面的那个if语句就是多余的

蓝袍道士 发表于 2012-6-17 21:17:12

各位高手啊,……我不得不解释一下啦。这个问题是从实际问题概括出来的简单表达。
由于后面还有许多代码,所以有必要在某种情况下从头循环一次。
按我的简单化理解,自定义函数 就相当于把那一段代码插在那里。我的困惑是,直接插在那里没问题,经自定义函数之后就不行了。

主要目的是要搞清楚原因所在,然后,得到这解决这问题的方法。
我想在xh() 函数执行时,直接跳到第2个循环去能行么?

afan 发表于 2012-6-17 21:35:21

回复 5# 蓝袍道士 Dim $png

For $i = 1 To 12
        MsgBox(0, $i, $png)
        If xh() Then ContinueLoop ;通过函数返回值来判断是否继续
        MsgBox(48, '注意', '此框弹出则说明 ContinueLoop 未执行')
Next

Func xh()
        For $i = 1 To 12
                $png = $i
                If $i = 3 Then Return 1
        Next
        Return 0
EndFunc   ;==>xh

蓝袍道士 发表于 2012-6-18 06:34:58

谢谢阿福版主指点,这样的代码能如我所愿。
页: [1]
查看完整版本: 在自定义函数中用ContinueLoop为什么会出错?[已解决]