lxsky 发表于 2012-4-2 17:12:46

Select case和 Switch case有什么区别

那位大虾普及一下Select case和 Switch case有什么区别

pp648852 发表于 2012-4-2 17:24:30

买一本《AU3自学手册》吧,从基础学起!然后你学会了,就明白区别了!用文字来说明,难理解!

user3000 发表于 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如以上例子,在特定条件下两者可以互换, 但代码简洁度相差会很大!
我们要看情况使用,写出更简洁的代码。

user3000 发表于 2012-4-2 17:34:39

买一本《AU3自学手册》吧,从基础学起!然后你学会了,就明白区别了!用文字来说明,难理解!
pp648852 发表于 2012-4-2 17:24 http://www.autoitx.com/images/common/back.gif

学习和理解编程中的判断和循环语句, 太重要了!
    有可能, 当新手们有需要时, 还是把自己的心得说一说吧, 有时候老手的经验会让他们更容易学习和理解!
当然, 如果是问如何声明和利用一个变量这类最基础的问题, 我是很赞同您的回答!

netegg 发表于 2012-4-2 18:01:18

本帖最后由 netegg 于 2012-4-2 18:03 编辑

简单说select是在切换变量或者说是个条件,switch是在切换的变量值

lxsky 发表于 2012-4-2 18:02:35

我就是觉得是一样的作用干吗搞出2种方法来,user3000说“在特定条件下两者可以互换, 但代码简洁度相差会很大!“看来应该是这样子的了

netegg 发表于 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,
就用这两个,未必那个更简单

happytc 发表于 2012-4-2 18:21:19

前者的 CASE 语句必须是一个表达式(多个表达时用 and or 等连接), 后者是 一个变量或值(多个变量要用英 ...
user3000 发表于 2012-4-2 17:28 http://www.autoitx.com/images/common/back.gif


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

两者最大的区别在于: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

vason1019 发表于 2012-4-2 19:11:21

这个语言的脚本确实要有基础

user3000 发表于 2012-4-2 20:37:49

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

两者最大的区别在于:Switch语句的Case是否执行 ...
happytc 发表于 2012-4-2 18:21 http://www.autoitx.com/images/common/back.gif


    还是正规军的编程理论扎实, 眼界够开阔!

whitehead 发表于 2012-4-2 20:48:14

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

两者最大的区别在于:Switch语句的Case是否执行 ...
happytc 发表于 2012-4-2 18:21 http://www.autoitx.com/images/common/back.gif
明白了二者的区别

zch11230 发表于 2012-4-2 23:37:11

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

两者最大的区别在于:Switch语句的Case是否执行 ...
happytc 发表于 2012-4-2 18:21 http://www.autoitx.com/images/common/back.gif


    Select不用说 很好理解 看了示例更好理解了 不过Switch变糊涂了看代码我以为会执行MsgBox(0, "Switch", 2) 将0改为1后就执行第2条了我没太懂 和我理解的正好相反,继续求科普。

魔导 发表于 2012-7-31 15:58:45

啊,原来是这么回事啊 。
还一直头疼这两个还有IF到底什么情况该用哪个 - -!
总算是看出点什么啦 ,感谢 谢谢楼上的 各位前辈

xyhqqaa 发表于 2017-9-13 10:49:10

回复 8# happytc


    学习了!!谢谢
页: [1]
查看完整版本: Select case和 Switch case有什么区别