shqf 发表于 2012-5-4 16:07:13

本帖最后由 shqf 于 2012-5-4 16:17 编辑

select只执行第一个条件成立的case语句啊,而不管下面是否还有成立的case语句,select语句就执行结束了.
如果说这相比于if 是一个缺陷的话,那么在已执行case的语句后加了continuecase,相当于克服了这个缺陷,会继续执行下面的case语句(继续下一个case循环,注意一旦又有一个case条件成立,则同样会在执行此case后结束select语句,除非又碰到了continuecase),而不结束select语句。帮助中select的功能写得很清楚,它说“终止Select或者Switch块中的当前case循环,并继续下一个case循环”。注意对后一个“循环”的理解,不是指从头开始循环,而是从这个case开始重新执行select语句。

netegg 发表于 2012-5-4 16:10:34

本帖最后由 netegg 于 2012-5-4 19:16 编辑

貌似只能拆成三个判断,还不如直接用if呢

问了问官网,大概意思好像是continuecase并不是继续条件选择,只是执行下一个case,但不会继续执行条件
ContinueCase executes the next case, it does not continue the switch/select or run any conditionals. If you want all cases to run use three separate If's or something to that effect.

502762378 发表于 2012-5-4 20:09:13

回复 15# user3000


    你说得没错,所有判断都取决于第一个为真的判断,学习了,顺便上下帮助文档对select的解释
如果表达式(第一个)为真则执行从下一行开始一直到下一个 Case 或 EndSelect 为止的所有语句.如果有多个Case表达式都成立则只执行第一个Case语句.
如果有多个Case表达式都成立则只执行第一个Case语句.
如果是这样,你第三个例子$aa = 220的语句是不是应该不执行?
这个问题很纠结

shqf 发表于 2012-5-4 21:37:23

因为有continuecase

user3000 发表于 2012-5-5 08:08:50

回复 18# 502762378

17 楼, 蛋大已经给出了来自官网的解答.
其实你如果运行了我在15楼的代码, 自己就会对这问题有深刻的体会了.
我重新编辑了我在15楼的发言, 让大家从字面上更容易理解 ContinueCase 的作用:
"当出现 CASE 真判断, 其跟有 ContinueCase 的, 下一条的 Case 语句 无论真假 肯定, 必定, 绝对会 执行!
如果接着还有 ContinueCase 关键词, 则下下条Case 语句 无论真假也是 肯定, 必定, 绝对会 执行! 一路执行下去, 直到遇到没有 ContinueCase 的 Case 行为止!"

Qokelate 发表于 2012-5-6 01:55:28

本帖最后由 Qokelate 于 2012-5-6 02:01 编辑

回复 10# netegg


    实践见真知,这种小问题何必上之官网

ContinueCase是立即执行下一个Case



Local $a = 1
Select
Case $a = 1
ContinueCase ;==> 跳转
MsgBox(0,0,1) ;这个永远不会执行,因为在ContinueCase时已经跳转了
Case $a = 2 ;<== 不管条件如何,如果Case $a=1 成立,那这个肯定也被执行
MsgBox(0, 0, 2)
Case $a > 0
MsgBox(0, 0, 0)
EndSelect

inter701 发表于 2012-5-10 21:16:49

Good~ Good

藤真 发表于 2012-5-19 10:49:30

谢谢各位的回复,学习了。。。

chenronting 发表于 2012-5-19 21:25:47

回复 21# Qokelate


    我这里使用了你两个楼层的代码, 都出来了错误,就是 ContinueCase 出现的错误。
我的版本是3.3.7.2
页: 1 [2]
查看完整版本: 求助,这个条件选择结构为什么只运行两次就自动退出了?