Swift基礎(chǔ)-邏輯分支

分支的介紹

  • 分支即if/switch/三目運算符等判斷語句
  • 通過分支語句可以控制程序的執(zhí)行流程

Bool類型

Bool類型 C OC Swift
底層類型 typedef signed char BOOL 真正的Bool類型true/false
是否是真正的Bool類型 不是 不是
Bool值 YES/NO YES/NO true/false
能否使用非布爾值(true/false以外的值) 正常 正常 報錯
是否非0即真 不是

if分支語句

  • 和OC中if語句有一定的區(qū)別
    • 判斷句可以不加()

    • if判斷時需遵守swift中Bool類型的規(guī)定

// 演練一:
let a = 10

// 錯誤寫法:
//if a {
//    print("a")
//}

// 正確寫法
if a > 9 {
    print(a)
}


// 演練二:
// 這個是可選類型,因為只有聲明成可選類型后,才可以判斷是否為空
// 可選類型會在后續(xù)講解,可先了解即可
let view : UIView? = UIView()

// 判斷如果view有值,則設(shè)置背景
// 錯誤寫法
//if view {
//    view.backgroundColor = UIColor.redColor()
//}

if view != nil {
    view!.backgroundColor = UIColor.redColor()
}

三目運算符

  • Swift 中的 三目 運算保持了和 OC 一致的風(fēng)格
var a = 10
var b = 50

var result = a > b ? a : b
println(result)

guard的使用

  • guard是Swift2.0新增的語法
  • 它與if語句非常類似浆兰,它設(shè)計的目的是提高程序的可讀性
  • guard語句必須帶有else語句,它的語法如下:
    • 當(dāng)條件表達式為true時候跳過else語句中的內(nèi)容排监,執(zhí)行語句組內(nèi)容
    • 條件表達式為false時候執(zhí)行else語句中的內(nèi)容掘猿,跳轉(zhuǎn)語句一般是return说搅、break、continue和throw
  • guard一般用于避免使用強制拆包, 優(yōu)化代碼結(jié)構(gòu)
guard 條件表達式 else {
    // 條換語句
    break
}
語句組

例子
var age = 18

func online(age : Int) -> Void {
    guard age >= 18 else {
        print("回家去")
        return
    }

    print("可以上網(wǎng)")
}

online(age)

switch分支

  • Switch作為選擇結(jié)構(gòu)中必不可少的語句也被加入到了Swift中
  • 蘋果對Switch進行了大大的增強,使其擁有其他語言中沒有的特性
基本用法和OC用法一致
  • 不同之處一:
    • switch后可以不跟()
    • case后可以不跟break(默認(rèn)會有break)
    • OC中可以不寫default,Swift中只有滿足所有條件才能忽略default
    • OC中default位置可以隨便放,Swift不可以
    • OC中在case中定義變量需要加大括號, 否則作用域混亂, Swift不用加大括號
let age = 18
switch age {
    case 0:
        print("剛出生")
    case 18:
        print("剛成年")
    case 40:
        print("一枝花")
        var name = "lnj"
    default:
        print("other")
}
  • 簡單使用補充1:
  • Swift中的switch可以判斷區(qū)間和元祖
// 判斷元祖
let point = (0, 50)
switch point {
    case (0, 0):
        print("原點")
    case (50, 50):
        print("中點")
    case (100, 100):
        print("右下角")
    default:
        print("other")
}
  • 簡單使用補充2:
    • Swift中case 分支的模式可以使用where語句來判斷額外的條件
// 了解
switch point {
    case let (x, y) where x == 0 && y == 0:
        print(x)
        print(y)
    case let (x, y) where x == 50 && y == 50:
        print(x)
        print(y)
    case let (x, y):
        print(x)
        print(y)
    default:
        print("other")
}
  • 簡單使用補充3:
    • 一個case判斷中,可以判斷多個值
    • 多個值以,隔開
let sex = 0

switch sex {
case 0, 1:
    print("正常人")
default:
    print("其他")
}
  • 簡單使用補充4:
    • 如果希望出現(xiàn)之前的case穿透,則可以使用關(guān)鍵字fallthrough
let sex = 0

switch sex {
case 0:
    fallthrough
case 1:
    print("正常人")
default:
    print("其他")
}
Switch支持多種數(shù)據(jù)類型
  • 浮點型的switch判斷
let f = 3.14
switch f {
case 3.14:
    print("π")
default:
    print("not π")
}
  • 支持字符串類型
    • 字符串的使用后面會詳細(xì)講解
let m = 5
let n = 10
var result = 0

let opration = "+"

switch opration {
    case "+":
        result = m + n
    case "-":
        result = m - n
    case "*":
        result = m * n
    case "/":
        result = m / n
default:
    result = 0
}

print(result)
switch支持區(qū)間判斷
  • 什么是區(qū)間?
    • 通常我們指的是數(shù)字區(qū)間:010,100200
  • swift中的區(qū)間常見有兩種
    • 半開半閉區(qū)間:0..<10 表示:0~9,不包括10
    • 閉區(qū)間:0...10 表示:0~10
let score = 88

switch score {
case 0..<60:
    print("不及格")
case 60..<80:
    print("幾個")
case 80..<90:
    print("良好")
case 90..<100:
    print("優(yōu)秀")
default:
    print("滿分")
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末获三,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锨苏,更是在濱河造成了極大的恐慌疙教,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伞租,死亡現(xiàn)場離奇詭異贞谓,居然都是意外死亡,警方通過查閱死者的電腦和手機葵诈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門裸弦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人作喘,你說我怎么就攤上這事理疙。” “怎么了徊都?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵沪斟,是天一觀的道長。 經(jīng)常有香客問我暇矫,道長主之,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任李根,我火速辦了婚禮槽奕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘房轿。我一直安慰自己粤攒,他們只是感情好所森,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夯接,像睡著了一般焕济。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盔几,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天晴弃,我揣著相機與錄音,去河邊找鬼逊拍。 笑死上鞠,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芯丧。 我是一名探鬼主播芍阎,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缨恒!你這毒婦竟也來了谴咸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤肿轨,失蹤者是張志新(化名)和其女友劉穎寿冕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椒袍,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡驼唱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驹暑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玫恳。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖优俘,靈堂內(nèi)的尸體忽然破棺而出京办,到底是詐尸還是另有隱情,我是刑警寧澤帆焕,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布惭婿,位于F島的核電站,受9級特大地震影響叶雹,放射性物質(zhì)發(fā)生泄漏财饥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一折晦、第九天 我趴在偏房一處隱蔽的房頂上張望钥星。 院中可真熱鬧,春花似錦满着、人聲如沸谦炒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宁改。三九已至缕探,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間还蹲,已是汗流浹背撕蔼。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秽誊,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓琳骡,卻偏偏與公主長得像锅论,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子楣号,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Swift提供了多種控制流聲明最易。包括while循環(huán)來多次執(zhí)行一個任務(wù);if炫狱,guard和switch聲明來根據(jù)確定...
    BoomLee閱讀 1,939評論 0 3
  • Swift 介紹 簡介 Swift 語言由蘋果公司在 2014 年推出藻懒,用來撰寫 OS X 和 iOS 應(yīng)用程序 ...
    大L君閱讀 3,200評論 3 25
  • 本章將會介紹 控制流For-In 循環(huán)While 循環(huán)If 條件語句Switch 語句控制轉(zhuǎn)移語句 continu...
    寒橋閱讀 715評論 0 0
  • Swift 提供了類似 C 語言的流程控制結(jié)構(gòu)嬉荆,包括可以多次執(zhí)行任務(wù)的for和while循環(huán),基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 693評論 1 1
  • 那年九月酷含,秋老虎正在發(fā)兇鄙早,來自四面八方的學(xué)生齊聚W大,這一天對于他們來說椅亚,向往的大學(xué)生活終于成真限番。走進校園,觸摸到...
    魏君故閱讀 434評論 0 3