找回密码
 加入
搜索
查看: 5830|回复: 13

[AU3基础] Select case和 Switch case有什么区别

 火.. [复制链接]
发表于 2012-4-2 17:12:46 | 显示全部楼层 |阅读模式
那位大虾普及一下Select case和 Switch case有什么区别
发表于 2012-4-2 17:24:30 | 显示全部楼层
买一本《AU3自学手册》吧,从基础学起!然后你学会了,就明白区别了!用文字来说明,难理解!
发表于 2012-4-2 17:28:25 | 显示全部楼层
本帖最后由 user3000 于 2012-4-2 17:30 编辑

前者的 CASE 语句必须是一个表达式(多个表达时用 and or 等连接), 后者是 一个变量或值(多个变量要用英文逗号连接)!
Local $i =0  ;  这里假设 $i 是程序中一个非负整数变量
Select
case $i >0 and $i< 11
                ;
case $i > 10
;
EndSelect

Switch $i 
        case 0
         ;
        Case 1,2,3,4,5,6,7,8,9,10
                ;
        Case Else
                ;
EndSwitch
如以上例子,在特定条件下两者可以互换, 但代码简洁度相差会很大!
我们要看情况使用,写出更简洁的代码。
发表于 2012-4-2 17:34:39 | 显示全部楼层
买一本《AU3自学手册》吧,从基础学起!然后你学会了,就明白区别了!用文字来说明,难理解!
pp648852 发表于 2012-4-2 17:24


学习和理解编程中的判断和循环语句, 太重要了!
    有可能, 当新手们有需要时, 还是把自己的心得说一说吧, 有时候老手的经验会让他们更容易学习和理解!
当然, 如果是问如何声明和利用一个变量这类最基础的问题, 我是很赞同您的回答!
发表于 2012-4-2 18:01:18 | 显示全部楼层
本帖最后由 netegg 于 2012-4-2 18:03 编辑

简单说select是在切换变量或者说是个条件,switch是在切换的变量值
 楼主| 发表于 2012-4-2 18:02:35 | 显示全部楼层
我就是觉得是一样的作用干吗搞出2种方法来,user3000说“在特定条件下两者可以互换, 但代码简洁度相差会很大!“看来应该是这样子的了
发表于 2012-4-2 18:04:24 | 显示全部楼层
本帖最后由 netegg 于 2012-4-2 18:11 编辑

回复 6# lxsky
简洁未必,完全看逻辑关系和写法
简单说个
如果$i = 1 且$j = 1时运行$i+$j,
如果$i = 1 且$j <> 1时运行$i*$j,
如果$i <> 1 且$j = 1时运行$i-$j,
如果$i <> 1 且$j <> 1($j恒不为0,不用写入程序判断)时运行$i/$j,
就用这两个,未必那个更简单
发表于 2012-4-2 18:21:19 | 显示全部楼层
前者的 CASE 语句必须是一个表达式(多个表达时用 and or 等连接), 后者是 一个变量或值(多个变量要用英 ...
user3000 发表于 2012-4-2 17:28



"后者是 一个变量或值" ---- 一样的可以是表达式

两者最大的区别在于:Switch语句的Case是否执行依赖于:Switch表达式的值与Case后表达式的值比较(是“=”号比较,而不是“==”比较);

而Select语句的Case执行与否只跟Case后表达值是否为真!

也就是Switch语句中的Case语句都是相关联的,也即只能执行一个条件比较(Switch表达式的值与Case后表达式的值比较);而Select语句中的Case语句可以是毫无关联的,也即可以执行多个条件。其实Au3时引进Select语句有点多余了,把一些独立的条件写在一起来比较,实际意义很小,远不如直接ElseIf来判断清析。所以几乎别的语言都没有Select关键字



$a = "C"
$b = "B"

Switch "C"
        Case 0                                
                        MsgBox(0, "Switch", 1)
        Case "c"
                MsgBox(0, "Switch", 2)
EndSwitch
        
Select
        Case 1 > 2
                MsgBox(0, "Select", "1>2")
        Case $a > $b
                MsgBox(0, "Select", "$a > $b")
EndSelect

发表于 2012-4-2 19:11:21 | 显示全部楼层
这个语言的脚本确实要有基础
发表于 2012-4-2 20:37:49 | 显示全部楼层
"后者是 一个变量或值" ---- 一样的可以是表达式

两者最大的区别在于:Switch语句的Case是否执行 ...
happytc 发表于 2012-4-2 18:21



    还是正规军的编程理论扎实, 眼界够开阔!
发表于 2012-4-2 20:48:14 | 显示全部楼层
"后者是 一个变量或值" ---- 一样的可以是表达式

两者最大的区别在于:Switch语句的Case是否执行 ...
happytc 发表于 2012-4-2 18:21

明白了二者的区别
发表于 2012-4-2 23:37:11 | 显示全部楼层
"后者是 一个变量或值" ---- 一样的可以是表达式

两者最大的区别在于:Switch语句的Case是否执行 ...
happytc 发表于 2012-4-2 18:21



    Select不用说 很好理解 看了示例更好理解了 不过Switch变糊涂了  看代码我以为会执行MsgBox(0, "Switch", 2) 将0改为1后就执行第2条了  我没太懂 和我理解的正好相反,继续求科普。
发表于 2012-7-31 15:58:45 | 显示全部楼层
啊,原来是这么回事啊 。
还一直头疼  这两个  还有  IF  到底什么情况该用哪个 - -!
总算是看出点什么啦 ,  感谢 谢谢楼上的 各位前辈
发表于 2017-9-13 10:49:10 | 显示全部楼层
回复 8# happytc


    学习了!!谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 23:47 , Processed in 0.082166 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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