for循環(huán)結(jié)構(gòu)
for i in -99...99{
? ? ? ?i*i
}
注:基于c的for循環(huán)結(jié)構(gòu)在swift3.0已經(jīng)取消填具。
for var a = -6.28 ; a <= 6.28 ; a += 0.1{?
? ?sin(a)
}
接下來我會通過擲骰子游戲來說明下面的循環(huán)結(jié)構(gòu)的不同以及用法
while循環(huán)結(jié)構(gòu)
在while循環(huán)條件统舀,可以直接跟一個或多個條件,當(dāng)滿足a贏得次數(shù)以及b贏得次數(shù)小于3劳景,那么就一直執(zhí)行while循環(huán)
repeat while循環(huán)結(jié)構(gòu)
至少執(zhí)行一次的循環(huán)結(jié)構(gòu)誉简,跟do while類似。
我們來優(yōu)化下這個擲骰子游戲盟广,只要a>b或b>a那么就結(jié)束游戲闷串,所以,我們可以采取repeat while來處理筋量,因為這個游戲至少得去玩一盤烹吵,只要是平局就繼續(xù)執(zhí)行循環(huán)。
break和continue
break 立即結(jié)束當(dāng)前循環(huán)
continue 結(jié)束當(dāng)前循環(huán)的內(nèi)容桨武,直接執(zhí)行下一次循環(huán)
這里利用了一個死循環(huán)肋拔,讓循環(huán)內(nèi)容無限去執(zhí)行,通過break和continue來控制循環(huán)是否終止呀酸。
假如平局凉蜂,那么就立馬跳出當(dāng)前循環(huán),不再去執(zhí)行下面的代碼了性誉;不是平局窿吩,那么就直接break結(jié)束循環(huán),輸出結(jié)果错览。
控制轉(zhuǎn)移
通過一個列子來說明
求x^4 - y^2 = 15 * x * y在300以內(nèi)的一個正整數(shù)解
思路:通過循環(huán)嵌套取x纫雁,y在300的值,如果滿足公式就打印并結(jié)束循環(huán)蝗砾。
第二種做法皱碘,在swift中可以將一個循環(huán)結(jié)構(gòu)用一個名字來代表团赏。
選擇結(jié)構(gòu)
可以利用 if .. else if ... else if .. else ..的形式來處理多個選擇
可以用switch來處理。
在swift中,用switch來進行選擇結(jié)構(gòu)誊役,每句case后不用跟break
在最后一句default:可以采用break或者()來表示什么都沒做
switch的一些用法
1.在case條件語句可以用..<或...區(qū)間形式
2.也可以采用元組的形式進行條件語句判斷
3.在采取元祖形式進行條件語句判斷的時候因块,可以利用下劃線的形式單獨判斷元組其中一個革娄,也可以利用區(qū)間來判斷元組元素是否在這個區(qū)間
4.在元組形式進行條件語句判斷捅膘,也可以通過元組解包的形式賦值一個新元組來處理
fallthrough關(guān)鍵字用于告訴case執(zhí)行完畢后跳入下一個case
guard關(guān)鍵字
舉列說明:我去買一樣?xùn)|西,如果我?guī)У腻X大于東西價格并且我能裝的容量大于了東西容量申尤,那么就可以買癌幕,反之不能買衙耕。
普通方法處理:
用普通方法處理,有2個嵌套判斷勺远,假如今后的業(yè)務(wù)邏輯更加復(fù)雜橙喘,那么代碼易讀性就大大降低。
為此胶逢,swift推出了guard關(guān)鍵字,guard else 確保一個條件為真厅瞎,這樣我們就不用去把跟業(yè)務(wù)邏輯不相干的還要寫在一起,顯得混亂初坠。
很清晰看的出和簸,采取guard else后,代碼條理非常清晰碟刺,更加易讀锁保。
where用法和模式匹配
通過where關(guān)鍵字來附加限制條件
列1:給出一個點,這個點可能x半沽,y相等爽柒,可能x等于-y
列2:給出一個年齡,10到19為青少年
普通做法:
這樣做發(fā)現(xiàn)代碼冗長者填,不夠簡練霉赡。
簡練做法:
通過if case方法就能直接判斷一個區(qū)間形式了
列3:根據(jù)列3附加一個條件限制,大于18的才是青年
同理幔托,采取where來附加限制條件
元組也可以這樣操作。
列4:取出1到100之間能被3整除的數(shù)
利用let case 蜂挪,where的形式重挑,我們可以寫出非常漂亮的代碼
總結(jié):合理通過利用swift各個關(guān)鍵字以及寫法,可以實現(xiàn)代碼簡潔化棠涮,易讀化谬哀,提升了代碼質(zhì)量。