麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

swift學習筆記(2)-基本運算符

2019-11-09 15:19:41
字體:
供稿:網(wǎng)友

賦值運算符

var a = 10;

如果賦值的右邊是一個多元組,它的元素可以馬上被分解成多個常量或變量:

let (x, y) = (1, 2)// 現(xiàn)在 x 等于 1,y 等于 2

與 C 語言和 Objective-C 不同,Swift 的賦值操作并不返回任何值。所以以下代碼是錯誤的:

if x = y { // 此句錯誤, 因為 x = y 并不返回任何值}

這個特性使你無法把(==)錯寫成(=),由于 if x = y 是錯誤代碼,Swift 能幫你避免此類錯誤發(fā)生。

算術(shù)運算符

Swift 中所有數(shù)值類型都支持了基本的四則算術(shù)運算符:

加法(+)減法(-)乘法(*)除法(/)

與 C 語言和 Objective-C 不同的是,Swift 默認情況下不允許在數(shù)值運算中出現(xiàn)溢出情況。但是你可以使用 Swift 的溢出運算符來實現(xiàn)溢出運算(如 a &+ b)。詳情參見溢出運算符。

加法運算符也可用于 String 的拼接:

"hello, " + "world" // 等于 "hello, world"

求余運算符

a = (b × 倍數(shù)) + 余數(shù) a % b 的結(jié)果就是上面的余數(shù),a為負數(shù)以上格式還是通用。

注意:在對負數(shù) b 求余時,b 的符號會被忽略。這意味著 a % b 和 a % -b 的結(jié)果是相同的。

組合賦值運算符

var a = 1a += 2// a 現(xiàn)在是 3

注意:復合賦值運算沒有返回值,let b = a += 2這類代碼是錯誤。這不同于上面提到的自增和自減運算符。

比較運算符(Comparison Operators)

等于(a == b)不等于(a != b)大于(a > b)小于(a < b)大于等于(a >= b)小于等于(a <= b)

當元組中的值可以比較時,你也可以使用這些運算符來比較它們的大小。例如,因為 Int 和 String 類型的值可以比較,所以類型為 (Int, String) 的元組也可以被比較。相反,Bool 不能被比較,也意味著存有布爾類型的元組不能被比較。

比較元組大小會按照從左到右、逐值比較的方式,直到發(fā)現(xiàn)有兩個值不等時停止。如果所有的值都相等,那么這一對元組我們就稱它們是相等的

(1, "zebra") < (2, "apple") // true,因為 1 小于 2(3, "apple") < (3, "bird") // true,因為 3 等于 3,但是 apple 小于 bird(4, "dog") == (4, "dog") // true,因為 4 等于 4,dog 等于 dog

注意:Swift 標準庫只能比較七個以內(nèi)元素的元組比較函數(shù)。如果你的元組元素超過七個時,你需要自己實現(xiàn)比較運算符。

三目運算符(Ternary Conditional Operator)

let contentHeight = 40let hasHeader = truelet rowHeight = contentHeight + (hasHeader ? 50 : 20)// rowHeight 現(xiàn)在是 90

空合運算符(Nil Coalescing Operator)

空合運算符(a ?? b)將對可選類型 a 進行空判斷,如果 a 包含一個值就進行解封,否則就返回一個默認值 b。表達式 a 必須是 Optional 類型。默認值 b 的類型必須要和 a 存儲值的類型保持一致。

空合運算符是對以下代碼的簡短表達方法:

a != nil ? a! : b

上述代碼使用了三目運算符。當可選類型 a 的值不為空時,進行強制解封(a!),訪問 a 中的值;反之返回默認值 b。無疑空合運算符(??)提供了一種更為優(yōu)雅的方式去封裝條件判斷和解封兩種行為,顯得簡潔以及更具可讀性。

注意: 如果 a 為非空值(non-nil),那么值 b 將不會被計算。這也就是所謂的短路求值。

下文例子采用空合運算符,實現(xiàn)了在默認顏色名和可選自定義顏色名之間抉擇:

let defaultColorName = "red"var userDefinedColorName: String? //默認值為 nilvar colorNameToUse = userDefinedColorName ?? defaultColorName// userDefinedColorName 的值為空,所以 colorNameToUse 的值為 "red"

閉區(qū)間運算符

閉區(qū)間運算符(a…b)定義一個包含從 a 到 b(包括 a 和 b)的所有值的區(qū)間。a 的值不能超過 b。 ? 閉區(qū)間運算符在迭代一個區(qū)間的所有值時是非常有用的,如在 for-in 循環(huán)中:

for index in 1...5 { 半開區(qū)間運算符

半開區(qū)間運算符(a..<b)定義一個從 a 到 b 但不包括 b 的區(qū)間。 半開區(qū)間的實用性在于當你使用一個從 0 開始的列表(如數(shù)組)時,非常方便地從0數(shù)到列表的長度。

let names = ["Anna", "Alex", "Brian", "Jack"]let count = names.countfor i in 0..<count { print("第 /(i + 1) 個人叫 /(names[i])")}// 第 1 個人叫 Anna// 第 2 個人叫 Alex// 第 3 個人叫 Brian// 第 4 個人叫 Jack

邏輯運算符(Logical Operators)

邏輯運算符的操作對象是邏輯布爾值。Swift 支持基于 C 語言的三個標準邏輯運算。

邏輯非(!a)邏輯與(a && b)邏輯或(a || b)

可以使用括號來明確優(yōu)先級


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 色妞欧美| 色妇视频 | 久久av免费 | 欧美成年人视频在线观看 | 久久精国| 国产毛片毛片 | 亚洲第一成网站 | 日韩精品久久久 | 久久成人国产精品 | 一区二区三高清 | 一区二区久久电影 | 久久久久久亚洲国产精品 | 国产精品视频自拍 | 欧美视频一区二区 | 91成人久久 | 中文字幕在线观看视频www | 一级毛片免费高清视频 | 久色精品| 国产精品久久久久久久久久三级 | 国产精品手机在线亚洲 | 在线中文字幕不卡 | 91精品国产乱码久久久久久久久 | 中国杭州少妇xxxx做受 | 欧美成人久久 | 久久久成人免费视频 | 亚洲欧美日韩在线 | 欧美成人精品一区 | 欧洲成人精品 | 高清国产免费 | 在线成人免费观看www | 国产 视频 一区二区 | 亚洲午夜不卡 | 久久成人免费观看 | 国产流白浆高潮在线观看 | 护士hd欧美free性xxxx | 午夜视频在线免费播放 | 欧美日韩免费看 | 久久精品com | 香蕉久久久 | 亚洲三区精品 | 日本xxxx色视频在线观看免费, |