一个关键字就让你震撼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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容

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