Swift学习笔记五:循环和条件语句

一、循环语句
1. for循环
     1) for -in 循环, 对于数据范围,序列,集合等中的每一个元素,都执行一次

          for a in 0...5{}    //循环迭代,从a=0a=5,执行{}里的代码

             注意:a只循环中存在,也就是出了{}a就不存在了
           
           或者遍历数组
                   
[objc]  view plain copy print ?
  1. let a = [1,2,3]  
  2. for b in a{}    //循环迭代,从b=1到b=3  
              
          如果你不需要序列中的每一个值,可以使用_来忽略它,仅仅只是使用循环体本身:
          for   _   in   0 ... 5 {}     // 循环执行{}里的代码 , 执行 6

     2) For-Condition-Increment条件循环。和c语言中的一样
                     for   var  a =  0 ; a< 3 ; a++ {}   // 循环,从 a=0 a=2

2. while循环
           while循环执行一系列代码块,直到某个条件为false为止。这种循环最长用于循环的次数不确定的情况
     1) while循环
                   var  a =  1     
         while   a  <  5  {  println ( a ++) }    // 输出 1 2 3 4 
     2) do-while循环
                   var  a =  1
         do println ( a ++)  } while   a  <  5      // 输出 1 2 3 4

               while和do-while的区别就是do-while是先执行再判断,也就是说do-while至少执行一次,while可能一次都不执行


二、条件语句

1. if 语句
           如果条件为true时,执行if语句块中的语句
                     var  a =  1
          if   a  >  0  {   println ( a )  }  // 输出 1
                注意:和C语言以及Objective-C不一样,if或者else后面必须带有括号,否则编译器会报错
                    

2. switch 语句

          1)switch语句考察一个值的多种可能性,将它与多个case相比较,从而决定执行哪一个分支的代码

[objc]  view plain copy print ?
  1. var a = 1  
  2. switch a{  
  3. case 0:  
  4.     println("0")  
  5. case 1:  
  6.     println("1")  
  7. default:  
  8.     println("other")  
  9. }   //输出1  

[objc]  view plain copy print ?
  1.   
          注意:和C以及Objective-C不一样,switch不再需要break。如上面的代码,即使没有break,也只输出1,而不是输出“1 other”。另外每个case后面都需要有可执行的代码,否则会报错
                         Swift学习笔记五:循环和条件语句_第1张图片


          2)如果两个分支执行的是相同的代码。可以直接写在一个case里面,用逗号,隔开

[objc]  view plain copy print ?
  1. var a = 1  
  2. switch a{  
  3. case 0, 1:  
  4.     println("0")  
  5. default:  
  6.     println("other")  
  7. }   //输出0  


          3)switch语句的case中可以匹配一个数值范围

[objc]  view plain copy print ?
  1. var a = 1  
  2. switch a{  
  3. case 0..3:  
  4.     println("0")  
  5. default:  
  6.     println("other")  
  7. }   //输出0  

          4)case还可以匹配元组,_代表着任何值

[objc]  view plain copy print ?
  1. var a = (1,2)  
  2. switch a{  
  3. case (1,1):  
  4.     println("0")  
  5. case (_,2):  
  6.     println(1)  
  7. default:  
  8.     println("other")  
  9. }   //输出1  

          5)数值绑定:

               在case匹配的同时,可以将switch语句中的值绑定给一个特定的常量或者变量,以便在case的语句中使用。比如:

[objc]  view plain copy print ?
  1. var a = (1,2)  
  2.           switch a{  
  3.           case (let x,1):  
  4.               println("x:\(x)")  
  5.           case (let y,2):  
  6.               println("y:\(y)")  
  7.           default:  
  8.               println("other")  
  9.           }   //输出y:1  

          6)while 关键字:

                 switch语句可以使用where关键词来增加判断的条件

[objc]  view plain copy print ?
  1. var a = (1,2)  
  2. switch a{  
  3. case let (x,y) where x>y:  
  4.     println("x>y")  
  5. case let (x,y) where x<y:  
  6.     println("x<y")  
  7. default:  
  8.     println("other")  
  9. }   //输出x<y  


3.控制跳转语句

       在Swift中控制跳转语句有4种,让编程人员更好地控制代码的流转,包括:
               continue ,  break ,   fallthrough, return

     1) continue
           continue语句告诉一个循环停止现在在执行的语句,开始下一次循环。

[objc]  view plain copy print ?
  1. for a in 0...3 {  
  2.     if a == 2 { continue  }  
  3.     println(a)  
  4. }   //输出 0 1 3  

     2)break

           break语句将终止整个循环的执行,可以用在循环语句中,也可以用在switch语句中。

[objc]  view plain copy print ?
  1. for a in 0...3 {  
  2.     if a == 2 { break  }  
  3.     println(a)  
  4. }   //输出 0 1  

     3) fallthrough

          由于Swift中的switch语句不会自动的因为没有break而跳转到下一个case,因此如果需要想C语言中那样,依次执行每个case的时候,就需要用到fallthrough关键词。

[objc]  view plain copy print ?
  1. let a = 2  
  2. switch a {  
  3. case 1:  
  4.     println("1")  
  5. case 2:  
  6.     println("2")  
  7.     fallthrough case 3:  
  8.         println("3")  
  9. default:  
  10.     println("other")  
  11. }   //输出2 3.如果a=1,则只输出1  


           4) 标签语句

               switch和循环可以互相嵌套,循环之间也可以互相嵌套,因此在使用break或者continue的时候,需要知道到底是对哪个语句起作用。这就需要用到标签语句。标签语句的一般形式如下:

[objc]  view plain copy print ?
  1. firstLoop: for a in 0..2{  
  2.     switch a{  
  3.     case 0:  
  4.         break  
  5.     default:  
  6.         println("default")  
  7.     }  
  8.     println(a)  
  9. }   //什么都不会输出,当a=0时,已经直接将for循环break了。如果去掉firstLoop,则只会break switch,输出 0 default 1  


               标签语句同样适用于多重循环

[objc]  view plain copy print ?
  1. firstLoop: for a in 0..2{  
  2.              for b in 0..2  
  3.              {  
  4.                  if b == 1  
  5.                  {  
  6.                      break firstLoop  
  7.                  }  
  8.                  println("a:\(a),b:\(b)")  
  9.              }  
  10.          }   //仅输出a:0,b:0  

你可能感兴趣的:(Swift学习笔记五:循环和条件语句)