數(shù)據(jù)類型
1.基礎(chǔ)數(shù)據(jù)類型:Int Double Float Bool String
2.集合類型:Array Set Dictionary
3.其他:
元組:(用于函數(shù)返回多個(gè)值)
可選類型(Optional):
let possibleNumber = "test"
let convertedNumber = Int(possibleNumber)
// convertedNumber 被推測(cè)為類型 "Int?"履腋, 或者類型 "optional Int"
1.一個(gè)可選的Int被寫作Int?而不是Int踩晶。問號(hào)暗示包含的值是可選類型苛预,也就是說可能包含Int值也可能不包含值。
2.nil不能用于非可選的常量和變量呐粘。如果你的代碼中有常量或者變量需要處理值缺失的情況,請(qǐng)把它們聲明成對(duì)應(yīng)的可選類型
3.一個(gè)可選的Int被寫作Int?而不是Int转捕。問號(hào)暗示包含的值是可選類型作岖,也就是說可能包含Int值也可能不包含值。
let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // 需要驚嘆號(hào)來獲取值
斷言
可選類型
可以讓你判斷值是否存在五芝,你可以在代碼中優(yōu)雅地處理值缺失的情況痘儡。然而,在某些情況下与柑,如果值缺失或者值并不滿足特定的條件谤辜,你的代碼可能沒辦法繼續(xù)執(zhí)行。這時(shí)价捧,你可以在你的代碼中觸發(fā)一個(gè)斷言(assertion)
來結(jié)束代碼運(yùn)行并通過調(diào)試來找到值缺失的原因
使用全局assert(_:_file:line:)
函數(shù)來寫一個(gè)斷言丑念。向這個(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ā)
如果不需要斷言信息脯倚,可以省略,就像這樣:asset(age >= 0)
斷言的適用場(chǎng)景:
- 整數(shù)類型的下標(biāo)索引被傳入一個(gè)自定義下標(biāo)實(shí)現(xiàn)嵌屎,但是下標(biāo)索引值可能太小或者太大推正。
- 需要給函數(shù)傳入一個(gè)值,但是非法的值可能導(dǎo)致函數(shù)不能正常執(zhí)行宝惰。
- 一個(gè)可選值現(xiàn)在是nil植榕,但是后面的代碼運(yùn)行需要一個(gè)非nil值。
注意:
1.當(dāng)代碼使用優(yōu)化編譯的時(shí)候尼夺,斷言將會(huì)被禁用尊残,例如在 Xcode 中炒瘸,使用默認(rèn)的 target Release 配置選項(xiàng)來 build 時(shí),斷言會(huì)被禁用
2.當(dāng)代碼使用優(yōu)化編譯的時(shí)候寝衫,斷言將會(huì)被禁用顷扩,例如在 Xcode 中,使用默認(rèn)的 target Release 配置選項(xiàng)來 build 時(shí)慰毅,斷言會(huì)被禁用