一个关键字就让你震撼Swift的强大且让你即刻喜欢上它


一个关键字,能做你50行代码也做不到的事情;
一个关键字,能让你震撼它的强大;
一个关键字,能让你即可喜欢上他.
不信?你拉到最后看一眼就行了!

这都行.jpg

不要不相信,这就带你去了解一个关键字,让你相信世界上真有奇迹!
***它仅仅是一个关键字:
--------->❀ switch ❀<----------


我们知道的switch是下面这样的:

  • 你能回答我为什么 括号里 只能是返回整型的表达式吗?
  • 你能回答我为什么 case 后只能是整数吗?
    • 可不可以不要那么多条条框框?
    • 可不可以不要那么功能单一?
    • 可不可以不写break,死命重复有意义吗?
    • 忘记写break可不可以不穿透?
 switch (返回整型的表达式) {
    case 整数:
        需要执行的代码A;
        break;
    case 整数:
         需要执行的代码B;
         break;
    ...
    default:
        需要执行的其它代码;
        break;
 }

***让 Swift 来回答你 : 如你所愿! ***


来看看Swift里的switch的优雅表演

你有的我一样有
  • 单值判断
//单值判断
let sex = 1
switch sex {
case 0:
    print("男")
case 1:
    print("女")
default:
    print("其他")
}

我有的你一样都没有
  • 多值(范围)判断
//多值判断
switch sex {
case 0...1:
    print("正常人")
default:
    print("其他")
}
  • 浮点型判断:为什么只能判断整形值,你out了
//浮点型判断
let pi = 3.14
switch pi {
case 3.14:
    print("π")
default:
    print("不是圆周率")
}
  • 字符判断 :直接点就是好
//字符判断
let m = 92.3
let n :Double = 0
var result :Double = 0
let option = "+"

switch option {
case "+":
    result = m + n
case "-":
    result = m - n
case "*":
    result = m * n
case "/":
    guard n > 0 else {
        result = m
        break
    }
    result = m / n
default:
    result = 0
}
print(result)
  • 范围匹配
//范围匹配
switch count {
case 0..<10:
    print("1位数")
case 10..<100:
    print("2位数")
case 100..<1000:
    print("3位数")
case 1000..<10000:
    print("4位数")
default:
    print("5位数")
}
  • 元祖匹配
//元组匹配
let point = (1,0)
switch point {
case (0,0):
    print("在原点")
case (0..<10,_) :
    print("在y轴右边")
case (_,0..<10) :
    print("在x轴上边")
default:
    print("在不知名的远方")
}
  • 值绑定 :还有谁能办到
//值绑定
let point2 = (0,-10)
switch point2 {
case (let x, 10)://当y=10时输出x的值
    print(x)
case (0 , let y) where y < 0://当x = 0 且 y < 0 时输出的值
    print(y)
default:
    print("其他")
}
  • 多值匹配 :这才是最牛逼的
//多值匹配
let currentCharacter: Character = "e"
switch currentCharacter {
case "a", "e", "i", "o", "u":
    print("\(currentCharacter) is a vowel")
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
     "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
    print("\(currentCharacter) is a consonant")
default:
    print("\(currentCharacter) is not a vowel or a consonant")
}

最后问一句:你震撼了吗?你喜欢上Swift了吗?
参考:http://www.cocoachina.com/ios/20140611/8769.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本章将会介绍 控制流For-In 循环While 循环If 条件语句Switch 语句控制转移语句 continu...
    寒桥阅读 744评论 0 0
  • Swift提供了多种控制流声明。包括while循环来多次执行一个任务;if,guard和switch声明来根据确定...
    BoomLee阅读 1,984评论 0 3
  • Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行...
    穷人家的孩纸阅读 722评论 1 1
  • 86.复合 Cases 共享相同代码块的多个switch 分支 分支可以合并, 写在分支后用逗号分开。如果任何模式...
    无沣阅读 1,433评论 1 5
  • 普普通通旅途,喜欢写点遇见的陌生人,毕竟人生能遇见的也就这一次。 (一)候车室的妇女 候车的时间很无聊,和哥们聊了...
    海象阅读 328评论 0 1