如何跳出主函数中函数调用序列
例如Func Main()
Call("A")
Call("B")
Call("C")
EndFunc
;
Func A()
EndFunc
Func B()
;假如B函数得到的值是正确的,执行Call("C")
;假如B函数得到的值是错误的,不再执行Call("C"),
EndFunc
Func C()
;
EndFunc
能否实现这样的函数调用? 回复 1# hanyueye511
你看下这是你想要的效果么
Local $a=1,$b
Main()
Func Main()
Call("A")
Call("B")
If $b=1 Then Call("C")
EndFunc
Func A()
EndFunc
Func B()
If $a=1 Then
$b=1
Else
$b=0
EndIf
Return $b
;假如B函数得到的值是正确的,执行Call("C")
;假如B函数得到的值是错误的,不再执行Call("C"),
EndFunc
Func C()
MsgBox(0,0,'C')
EndFunc
这个方法有考虑过,我想每个子函数都调用一个类似exit这样的函数,但是若是还使用exit的话,会导致我整个进程全部退出。请教有没有好办法只让它退出当前函数执行,调用类似exit函数后就不在执行MAIN了 AutoIt似乎没有异常处理Try...catch,有就方便了 回复 4# hanyueye511
Return不就是函数的结束吗? 回复 3# hanyueye511
return 关键字可以让你根据需要时, 随时终止一个函数的执行, 立即从中返回主程序!
au3 有一些内置宏 @error@extended等, 可以在自己函数中在出错判断时用SetError设置其值...
调用此函数后, 你就可以以此判断函数执行成功与否了, 多数内置函数便是这样做的: 成功时, @error 为 0,否则为 1等.
此外, 调用函数最好是直接以函数名来调用, 而不是用CALL. 后者有太多局限性, 比如参数是数组时, 相对来说, 要处理起来更麻烦.
简单示例:Local $a=1,$b
a()
$b = b()
If Not @error Then c()
Func a()
EndFunc
Func b()
If $a=1 Then
$b=6
Return SetError(0, '', $b)
Else
$b=0
Return SetError(1, '', $b)
EndIf
EndFunc
Func C()
MsgBox(0,'',$b)
EndFunc 学习了,谢谢 如果使用判断值的方法,不难实现停止主函数调用函数,除此之外没有其他方法了吗?因为我主程序调用了很多子函数例如A()~Z(),返回主函数都要先判断@error,我的程序构思是,从A()开始,函数执行成功就执行下一个函数,即成功即顺序执行A() 到 Z(), 如果某一个函数执行不成功,就执行Z() 回复 8# hanyueye511
同步 如果使用判断值的方法,不难实现停止主函数调用函数,除此之外没有其他方法了吗?因为我主程序调用了很多子 ...
hanyueye511 发表于 2012-9-23 22:54 http://www.autoitx.com/images/common/back.gif
技术研究吗? 还是特殊需求? 采用同步调用,必须等待这段代码执行完返回结果后,调用方才能继续往下执行,似乎还是会返回主程序继续后面调用 {:face (245):} 求解,持续等待
页:
[1]