swift 基礎(chǔ)

Int

一般來說赐写,你不需要專門指定整數(shù)的長(zhǎng)度。Swift 提供了一個(gè)特殊的整數(shù)類型Int,長(zhǎng)度與當(dāng)前平臺(tái)的原生字長(zhǎng)相同:

  • 在32位平臺(tái)上惰说,Int 和 Int32 長(zhǎng)度相同
  • 在64位平臺(tái)上舆乔,Int 和 Int64 長(zhǎng)度相同

除非你需要特定長(zhǎng)度的整數(shù)岳服,一般來說使用 Int 就夠了。這可以提高代碼一致性和可復(fù)用性希俩。即使是在32位平臺(tái)上吊宋,Int 可以存儲(chǔ)的整數(shù)范圍也可以達(dá)到 -2,147,483,648 ~ 2,147,483,647 ,大多數(shù)時(shí)候這已經(jīng)足夠大了颜武。


類別名

類型別名(type aliases)就是給現(xiàn)有類型定義另一個(gè)名字璃搜。你可以使用typealias關(guān)鍵字來定義類型別名。
typealias AudioSample = UInt16 // 給UInt16 起個(gè)別名叫AudioSample
定義了一個(gè)類型別名之后鳞上,你可以在任何使用原始名的地方使用別名:

print(maxAmplitudeFound)  // 輸出: 0
var a: AudioSample = 0

元祖

元組(tuples)把多個(gè)值組合成一個(gè)復(fù)合值腺劣。元組內(nèi)的值可以是任意類型,并不要求是相同類型因块。

let http404Error = (404, "Not Found")
// http404Error 的類型是 (Int, String)橘原,值是 (404, "Not Found")

你可以將一個(gè)元組的內(nèi)容分解(decompose)成單獨(dú)的常量和變量,然后你就可以正常使用它們了:

let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// 輸出 "The status code is 404"
print("The status message is \(statusMessage)")
// 輸出 "The status message is Not Found"

此外涡上,你還可以通過下標(biāo)來訪問元組中的單個(gè)元素趾断,下標(biāo)從零開始:

print("The status code is \(http404Error.0)")
// 輸出 "The status code is 404"
print("The status message is \(http404Error.1)")
// 輸出 "The status message is Not Found"

你可以在定義元組的時(shí)候給單個(gè)元素命名:
let http200Status = (statusCode: 200, description: "OK") 給元組中的元素命名后,你可以通過名字來獲取這些元素的值:

print("The status code is \(http200Status.statusCode)")
// 輸出 "The status code is 200"
print("The status message is \(http200Status.description)")
// 輸出 "The status message is OK"

斷言

向這個(gè)函數(shù)傳入一個(gè)結(jié)果為 true 或者 false 的表達(dá)式以及一條信息吩愧,當(dāng)表達(dá)式的結(jié)果為 false 的時(shí)候這條信息會(huì)被顯示:

let age = -3
assert(age >= 0, "A person's age cannot be less than zero") // 因?yàn)?age < 0芋酌,所以斷言會(huì)觸發(fā)

如果不需要斷言信息,可以就像這樣忽略掉:

assert(age >= 0)

空合運(yùn)算符

空合運(yùn)算符(a ?? b)將對(duì)可選類型 a 進(jìn)行空判斷雁佳,如果 a 包含一個(gè)值就進(jìn)行解封脐帝,否則就返回一個(gè)默認(rèn)值 b。表達(dá)式 a 必須是 Optional 類型糖权。默認(rèn)值 b 的類型必須要和 a 存儲(chǔ)值的類型保持一致堵腹。

空合運(yùn)算符是對(duì)以下代碼的簡(jiǎn)短表達(dá)方法:
a != nil ? a! : b


區(qū)間運(yùn)算符

閉區(qū)間運(yùn)算符

閉區(qū)間運(yùn)算符(a...b)定義一個(gè)包含從 a 到 b(包括 a 和 b)的所有值的區(qū)間。a 的值不能超過 b星澳。

for index in 1...5 {
    print("\(index) * 5 = \(index * 5)")
}

半開區(qū)間運(yùn)算符

半開區(qū)間運(yùn)算符(a..<b)定義一個(gè)從 a 到 b 但不包括 b 的區(qū)間疚顷。 之所以稱為半開區(qū)間,是因?yàn)樵搮^(qū)間包含第一個(gè)值而不包括最后的值。

for i in 0..<5 {
    print("第 \(i + 1) 個(gè)人叫 \(names[i])")
}

單側(cè)區(qū)間

閉區(qū)間操作符有另一個(gè)表達(dá)形式腿堤,可以表達(dá)往一側(cè)無限延伸的區(qū)間 —— 例如阀坏,一個(gè)包含了數(shù)組從索引 2 到結(jié)尾的所有值的區(qū)間。

for name in names[2...] {
    print(name)
}

for name in names[...2] {
    print(name)
}

for name in names[..<2] {
    print(name)
}

數(shù)組

遍歷

用enumerated()方法來進(jìn)行數(shù)組遍歷來獲取索引和值

let array = ["qqq","www","eee"]
for (_, value) in array.enumerated() {
    print(value)
}

字典


switch

在 Swift 中笆檀,當(dāng)匹配的 case 分支中的代碼執(zhí)行完畢后忌堂,程序會(huì)終止switch語句,而不會(huì)繼續(xù)執(zhí)行下一個(gè) case 分支酗洒。這也就是說士修,不需要在 case 分支中顯式地使用break語句。

let anotherCharacter: Character = "a"
switch anotherCharacter {
case "a": // 無效寝蹈,這個(gè)分支下面沒有語句
case "A":
    print("The letter A")
default:
    print("Not the letter A")
}
// 這段代碼會(huì)報(bào)編譯錯(cuò)誤

為了讓單個(gè)case同時(shí)匹配a和A李命,可以將這個(gè)兩個(gè)值組合成一個(gè)復(fù)合匹配,并且用逗號(hào)分開:

let anotherCharacter: Character = "a"
switch anotherCharacter {
case "a", "A":
    print("The letter A")
default:
    print("Not the letter A")
}
// 輸出 "The letter A

注意: 如果想要顯式貫穿case分支箫老,請(qǐng)使用fallthrough語句

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末封字,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子耍鬓,更是在濱河造成了極大的恐慌阔籽,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牲蜀,死亡現(xiàn)場(chǎng)離奇詭異笆制,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)涣达,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門在辆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人度苔,你說我怎么就攤上這事匆篓。” “怎么了寇窑?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵鸦概,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我甩骏,道長(zhǎng)窗市,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任饮笛,我火速辦了婚禮咨察,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缎浇。我一直安慰自己扎拣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布素跺。 她就那樣靜靜地躺著二蓝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪指厌。 梳的紋絲不亂的頭發(fā)上刊愚,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音踩验,去河邊找鬼鸥诽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛箕憾,可吹牛的內(nèi)容都是我干的牡借。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼袭异,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼钠龙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起御铃,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤碴里,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后上真,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咬腋,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年睡互,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了根竿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡就珠,死狀恐怖寇壳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嗓违,我是刑警寧澤九巡,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站蹂季,受9級(jí)特大地震影響冕广,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜偿洁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一撒汉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涕滋,春花似錦睬辐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侵俗。三九已至,卻和暖如春丰刊,著一層夾襖步出監(jiān)牢的瞬間隘谣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工啄巧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寻歧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓秩仆,卻偏偏與公主長(zhǎng)得像码泛,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子澄耍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354