Swift

★学习笔记:《iOS高级:Swift入门精讲②》第一节 Swif

2019-07-22  本文已影响0人  麦穗0615

前言:
本篇为视频学习笔记

Switch

 var number = 1
 switch number {
 case 1:
     print("number is 1")
     break
 case 2:
     print("number is 2")
     break
 default:
     print("number is other")
     break
 } // number is 1

跟我们之前学的C语言是差不多的,注意点如下:

  • ★ case 、default后面不能写大括号{}

  • ★ break可以省略,对其贯穿性没有影响,默认可以不用写,默认是不可以贯穿的

  • ★ fallthrough (贯穿),贯穿的话可以加 fallthrough关键字



  • ★ switch必须要保证能处理所有情况如下代码就会报错


原因:switch处理的情况不详细、不完全

number是一个整数,放到switch中判断的是Int类型整数,整数的情况有很多种,可以认为无数多种,它可能是100,也可能是200,-100,-200,所以这个case要处理所有的话,case 1、case2、case3就要把所有整数可能取的值都要写出来,这个才代表处理了所有情况。所以,你没有处理所有情况,有遗漏,所以报错。所以,像这样的我们只能,如果你希望处理所有情况,由于它是一个整数,你只能加default。如下图:


  • ★ case 、default后面至少要有一条语句
  • ★ 如果不想做任何事,加个break即可

  • ★ 如果能保证已处理所有情况,也可以不必使用default
 enum Answer { case right, wrong}
 let answer = Answer.right
 switch answer {
 case Answer.right:
     print("right")
 case Answer.wrong:
     print("wrong")
 }

// 由于编译器已经确定answer是Ansewer类型,因此可以省略Answer

 switch answer {
 case .right:
     print("right")
 case .wrong:
     print("wrong")
 }

复合条件

★ switch也支持Character、String类型

 let string = "Jack"
 switch string {
 case "Jack":
     fallthrough
 case "Rose":
     print("Right person")
 default:
     break
 } // Right person   

判断string字符串是否与Jack相等,那么怎么比较两个字符串相不相等呢?默认的比较,其实也就是比较里面的每一个字符是不是一样的。如果相等,意味着case是匹配的,再往下看是fallthrough,所以它会直接来到Rose这个位置打印 Right person。也就是说,我们的string无论是取值Jack还是Rose都会执行 print("Right person")这段代码。开发中,也会有这样的需求,希望两个case执行的事情是一样的。那么就可以这样做,加一个fallthrough。类似于C语言:

   switch age {
   case 1:
   case 2:
       print("1  2")
   default:
       print("other")
   }

Swift中是不能这样写的,说了case后必须有一条语句



你可以加一个fallthrough,他也是一个语句,如下:

还可以下面这样写:

 let character: Character = "a"
 switch character {
 case "a","A":
     print("The letter A")
 default:
     print("Not the letter A")
 } // The letter A
上一篇下一篇

猜你喜欢

热点阅读