很基礎(chǔ)的東西厉萝,只看沒見過的
區(qū)別于 C 語言立莉,在 Swift 中你可以對(duì)浮點(diǎn)數(shù)進(jìn)行取余運(yùn)算(%),Swift 還提供了 C 語言沒有的表達(dá)兩數(shù)之間的值的區(qū)間運(yùn)算符(a..<b 和 a...b)烟很,這方便我們表達(dá)一個(gè)區(qū)間內(nèi)的數(shù)值
如果賦值的右邊是一個(gè)多元組颈墅,它的元素可以馬上被分解成多個(gè)常量或變量:
let (x, y) = (1, 2)
// 現(xiàn)在 x 等于 1,y 等于 2
與 C 語言和 Objective-C 不同雾袱,Swift 的賦值操作并不返回任何值恤筛,所以以下代碼是錯(cuò)誤的:
if x = y {
// 此句錯(cuò)誤, 因?yàn)?x = y 并不返回任何值
}
與 C 語言和 Objective-C 不同的是,Swift 默認(rèn)情況下不允許在數(shù)值運(yùn)算中出現(xiàn)溢出情況芹橡。但是你可以使用 Swift 的溢出運(yùn)算符來實(shí)現(xiàn)溢出運(yùn)算(如 a &+ b)毒坛。
加法運(yùn)算符也可用于 String 的拼接:
"hello, " + "world" // 等于 "hello, world"
不同于 C 語言和 Objective-C,Swift 中是可以對(duì)浮點(diǎn)數(shù)進(jìn)行求余的林说。
注意:
復(fù)合賦值運(yùn)算沒有返回值煎殷,let b = a += 2這類代碼是錯(cuò)誤。這不同于上面提到的自增和自減運(yùn)算符述么。
注意: Swift 也提供恒等(===)和不恒等(!==)這兩個(gè)比較符來判斷兩個(gè)對(duì)象是否引用同一個(gè)對(duì)象實(shí)例蝌数。更多細(xì)節(jié)在類與結(jié)構(gòu)。
當(dāng)元組中的值可以比較時(shí)度秘,你也可以使用這些運(yùn)算符來比較它們的大小。例如饵撑,因?yàn)?Int 和 String 類型的值可以比較剑梳,所以類型為 (Int, String) 的元組也可以被比較。相反滑潘,Bool 不能被比較垢乙,也意味著存有布爾類型的元組不能被比較。
比較元組大小會(huì)按照從左到右语卤、逐值比較的方式追逮,直到發(fā)現(xiàn)有兩個(gè)值不等時(shí)停止酪刀。如果所有的值都相等,那么這一對(duì)元組我們就稱它們是相等的钮孵。例如:
(1, "zebra") < (2, "apple") // true骂倘,因?yàn)?1 小于 2
(3, "apple") < (3, "bird") // true,因?yàn)?3 等于 3巴席,但是 apple 小于 bird
(4, "dog") == (4, "dog") // true历涝,因?yàn)?4 等于 4,dog 等于 dog
注意: Swift 標(biāo)準(zhǔn)庫只能比較七個(gè)以內(nèi)元素的元組比較函數(shù)漾唉。如果你的元組元素超過七個(gè)時(shí)荧库,你需要自己實(shí)現(xiàn)比較運(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ì)以下代碼的簡短表達(dá)方法:
a != nil ? a! : b
let defaultColorName = "red"
var userDefinedColorName: String? //默認(rèn)值為 nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName 的值為空,所以 colorNameToUse 的值為 "red"
閉區(qū)間運(yùn)算符(a...b)定義一個(gè)包含從 a 到 b(包括 a 和 b)的所有值的區(qū)間恤煞。a 的值不能超過 b屎勘。 ? 閉區(qū)間運(yùn)算符在迭代一個(gè)區(qū)間的所有值時(shí)是非常有用的
半開區(qū)間(a..<b)定義一個(gè)從 a 到 b 但不包括 b 的區(qū)間。 之所以稱為半開區(qū)間居扒,是因?yàn)樵搮^(qū)間包含第一個(gè)值而不包括最后的值概漱。