Swift 基礎(chǔ)筆記 - 邏輯分支,循環(huán),Switch

if條件分支

var i = 10
if i > 0
{
print("Hello World")
}
  • 小結(jié)
    • Swift中沒(méi)有C語(yǔ)言中的非零即真概念
    • 在邏輯判斷時(shí)必須顯式地指明具體的判斷條件
    • if 語(yǔ)句條件的 () 可以省略,但是 {} 不能省略

三目運(yùn)算符

var a = 10
var b = 50
var result = a > b ? a : b
print(result)

注意問(wèn)號(hào)前一定要有空格, 條件也只能是Bool類(lèi)型

可選項(xiàng)

例1

let url = NSURL(string: "http://www.baidu.com/")

if url != nil {
    NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, _, _) -> Void in
        print(NSString(data: data!, encoding: NSUTF8StringEncoding))
    }).resume()
}
  • 小結(jié)
    • 在 Swift 中,不是所有的對(duì)象實(shí)例化方法都會(huì)返回值物遇,在實(shí)際開(kāi)發(fā)中需要注意實(shí)例化函數(shù)的返回類(lèi)型窖张,例如:
convenience init?(string URLString: String)
  • 如果有 ? 表示改方法有可能無(wú)法實(shí)例化到正確的對(duì)象

  • 這種函數(shù)返回的對(duì)象梢褐,被稱(chēng)為 可選項(xiàng),即有可能有值挥萌,也有可能沒(méi)有值
    -實(shí)際開(kāi)發(fā)時(shí)堂污,需要針對(duì)這種對(duì)象加以判斷恩脂,并且在分支內(nèi)部使用 !,指明改對(duì)象確實(shí)是存在的

  • 相比在 OC 的開(kāi)發(fā)楷拳,尤其在日常練習(xí)時(shí)绣夺,會(huì)給定一個(gè)能夠運(yùn)行的值,而在實(shí)際運(yùn)行時(shí)欢揖,一旦條件不滿(mǎn)足陶耍,會(huì)直接閃退,這樣用戶(hù)體驗(yàn)會(huì)非常不好.

例2

//可選綁定
if let url = NSURL(string: "www.baidu.com")
{
    NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: { (data, _, _) in
        print(String(data: data!, encoding: NSUTF8StringEncoding))
    }).resume()
}
  • 小結(jié)
    • 使用 if let 常量 = 可選構(gòu)造函數(shù) 的方式能夠確保分支內(nèi)部常量一定是有值的(可選綁定),并且在分支內(nèi)部不再需要使用 !
    • 可選綁定是 Swift 代碼中的一個(gè)非常重要的使用技巧
    • 盡管 Swift 提供了類(lèi)型校驗(yàn)的手段她混,但是要寫(xiě)出 優(yōu)雅 的 Swift 代碼烈钞,還是需要多加練習(xí)的,否則一不小心就會(huì)出現(xiàn)分支嵌套層次很深的代碼
    • 有關(guān)?! 的選擇坤按,可以借助 Xcode 的輔助工具毯欣,但是強(qiáng)烈建議每次遇到提示時(shí),要多加思考臭脓,反復(fù)揣摩.

例3

var name: String?
print(name?.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
name = "zhangsan"
print(name?.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
let  l = 10
print(l + (name?.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) ?? 0))
//打印結(jié)果為18 ,如果注釋name = "zhangsan" 則打印10 
  • 小結(jié)
    • ?? 是一個(gè)非常有用的操作符酗钞,能夠快速對(duì) nil 進(jìn)行判斷
    • 如果對(duì)象是 nil,則使用 ?? 后面的值代替前面的nil 值參與計(jì)算
    • 在使用??時(shí)来累,整個(gè)部分需要使用 () 包裝
    • 這一技巧在 UITableView數(shù)據(jù)源方法中尤為重要

循環(huán)

  • OC for循環(huán)
   // OC的for:
        for (int i = 0; i < 5; i++) {
            NSLog(i)
        }
  • Swift 常規(guī)寫(xiě)法

這種寫(xiě)法即將被廢棄

Snip20160411_3.png
for var i = 0; i < 10; i++ {
    print(i)
}
  • Swift 推薦寫(xiě)法
//代表 I的取值為0 - 9
for i in 0 ..< 10
{
    print(i)
}
//代表i的取值為 0 - 10
for i in 0 ... 10 {
    print(i)
}

范圍運(yùn)算符
... 閉合范圍運(yùn)算符 表示 a 到 b, [a, b] 0-5, 包含a,也包含b
..< 半閉合范圍運(yùn)算符 表示 a 到 b, [a, b) 0-4, 包含a,但是不包含b
運(yùn)算符左右要不就都不要空格,要不就都空格

  • 省略下標(biāo)
    • _表示忽略對(duì)應(yīng)位置的值,執(zhí)行代碼6次
for _ in 0...5 {
print("hello")
}

switch

判斷學(xué)生分?jǐn)?shù)

/*:
    判斷分?jǐn)?shù):
        90-99: 優(yōu)秀
        80-89: 良好
        70-79: 中等
        60-69: 及格
        60以下: 不及格
*/
let score = 89
switch (score / 10)
{
case 9 :
    print("優(yōu)秀")
case 8 :
    print("良")
//如果要執(zhí)行下一個(gè)case需要使用fallthrough 關(guān)鍵字
    fallthrough
case 7:
    print("中")
case 6:
    print("及格")
default:
    print("不及格")
}

switch通過(guò)區(qū)間匹配

let score = 80

switch (score) {
case 90 ... 100 :
    print("優(yōu)秀")
case 80 ..< 90 :
    print("良")
case 70 ..< 80 :
    print("中")
    fallthrough
case 60 ..< 70:
    print("及格")
default:
    print("不及格")   
}

匹配字符串

/*
Monday 星期一
Tuesday 星期二
Wednesday 星期三
Thursday 星期四
Friday 星期五
Saturday 星期六
Sunday 星期日
*/
let weekDay = "Tuesday"
switch (weekDay) {    
case "Monday" :
    print("是星期一呀")
case "Tuesday":
    print("是星期二呀")
default :
    print("隨便了")
}

  • 小結(jié)
    • switch 可以對(duì)Float, Bool, String, Int, 枚舉進(jìn)行判斷
    • 不再需要break
    • 要處理所有可能的情況砚作,不然編譯器直接報(bào)錯(cuò),不處理的條件可以放在 default 分支中
    • 穿透下一個(gè)使用fallthrough關(guān)鍵字
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嘹锁,一起剝皮案震驚了整個(gè)濱河市葫录,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌领猾,老刑警劉巖米同,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骇扇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡窍霞,警方通過(guò)查閱死者的電腦和手機(jī)匠题,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)但金,“玉大人韭山,你說(shuō)我怎么就攤上這事±淅#” “怎么了钱磅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)似枕。 經(jīng)常有香客問(wèn)我盖淡,道長(zhǎng),這世上最難降的妖魔是什么凿歼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任褪迟,我火速辦了婚禮,結(jié)果婚禮上答憔,老公的妹妹穿的比我還像新娘味赃。我一直安慰自己,他們只是感情好虐拓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布心俗。 她就那樣靜靜地躺著,像睡著了一般蓉驹。 火紅的嫁衣襯著肌膚如雪城榛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天态兴,我揣著相機(jī)與錄音狠持,去河邊找鬼。 笑死瞻润,一個(gè)胖子當(dāng)著我的面吹牛工坊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敢订,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼王污,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了楚午?” 一聲冷哼從身側(cè)響起昭齐,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矾柜,沒(méi)想到半個(gè)月后阱驾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體就谜,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年里覆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丧荐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喧枷,死狀恐怖虹统,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情隧甚,我是刑警寧澤车荔,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站戚扳,受9級(jí)特大地震影響忧便,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜帽借,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一珠增、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧砍艾,春花似錦切平、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)禀综。三九已至简烘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間定枷,已是汗流浹背孤澎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留欠窒,地道東北人覆旭。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像岖妄,于是被迫代替她去往敵國(guó)和親型将。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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

  • 關(guān)于 Swift 重要這個(gè)文檔所包含的準(zhǔn)備信息, 是關(guān)于開(kāi)發(fā)的 API 和技術(shù)的荐虐。這個(gè)信息可能會(huì)改變, 根據(jù)這個(gè)文...
    無(wú)灃閱讀 4,304評(píng)論 1 27
  • Swift 介紹 簡(jiǎn)介 Swift 語(yǔ)言由蘋(píng)果公司在 2014 年推出七兜,用來(lái)撰寫(xiě) OS X 和 iOS 應(yīng)用程序 ...
    大L君閱讀 3,223評(píng)論 3 25
  • 一直沒(méi)有時(shí)間好好看一下swift,最近復(fù)習(xí)了一遍語(yǔ)法福扬,這里記錄swift學(xué)習(xí)過(guò)程中遇到的一些問(wèn)題和要點(diǎn)腕铸,和Obje...
    bomo閱讀 2,352評(píng)論 0 25
  • 一生中總不可避免的事情就是勞作惜犀,但勞動(dòng)一定是一件痛苦的事嗎? 我這個(gè)懶蟲(chóng)一直都有一個(gè)所謂的堅(jiān)持了很久的好習(xí)慣狠裹,那就...
    布拉德皮特閱讀 758評(píng)論 0 0
  • 記的有首歌叫《從前慢》 記得早先少年時(shí) 大家誠(chéng)誠(chéng)懇懇 說(shuō)一句是一句 清早上火車(chē)站 長(zhǎng)街黑暗無(wú)行人 賣(mài)豆?jié){的小...
    四月一日砂閱讀 252評(píng)論 0 0