Swift基本運算符_2

術(shù)語

運算符分為一元,二元,三元運算符

  • 一元運算符對單一操作對象進行操作(如-a),一元運算符又分前置前置運算符和后置運算符,前置運算符緊跟操作對象之前(如!b),后置運算符緊跟操作運算符之后(如c!)
  • 二元運算符操作兩個對象(如2+3),是中置的,放在兩個操作對象中間
  • 三元運算符,和c語言一樣,swift只有一種三元運算符,就是三目運算符(a?b:c)

受運算符影響的較操作數(shù),在表達式1+2中,+就是運算符,12就是操作數(shù)

賦值運算符

賦值運算符a=b,表示用b的值來初始化或者更新a
a=b不返回任何值

算術(shù)運算符

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

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

加法運算符可以拼接字符串

var addStr = "i am" + "Edison"

求余運算符

求余運算符(a%b)是計算 b的多少倍剛好可以容下a,返回多出來的那部分(余數(shù))

注意:
求余運算符(%)在其他語言也叫取模運算符。但是嚴格說來,我們看該運算符對負數(shù)的操作結(jié)果,「求余」比「取模」更合適些

9 % 4    // 等于 1

為了得到a % b的結(jié)果,% 計算了以下等式,并輸出余數(shù)作為結(jié)果:

a = (b × 倍數(shù)) + 余數(shù)

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

組合賦值運算符

跟c語言一樣,Swift 也提供把其他運算符和賦值運算(=)組合的組合賦值運算符,組合加運算(+=)(-=) 等等

復合賦值運算沒有返回值,所以let b = a+=5是錯誤的

比較運算符

原標準的c語言中的比較運算符都可以在swift中使用

  • 等于 ==
  • 不等于 !=
  • 大于 >
  • 小于 <
  • 大于等于 >=
  • 小于等于 <=

每個比較運算都返回了一個標識表達式是否成立的布爾值

比較運算多用于條件語句,如if條件

空合運算符

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

空合運算符是對一下代碼的簡短表達方式

a  !=  nil ? a! : b

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

區(qū)間運算符

閉區(qū)間運算符

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

for index in 1...6 {
    
    print(index)
}

上面的例子中,index 是一個每次循環(huán)遍歷開始時被自動賦值的常量。這種情況下,index在使用前不需要聲明,只需要將它包含在循環(huán)的聲明中,就可以對其進行隱式聲明,而無需使用let 關(guān)鍵字聲明。

如果你不需要區(qū)間序列內(nèi)每一項的值,你可以使用下劃線(_)替代變量名來忽略這個值:

let base = 3
let power = 10
var answer = 1
for _ in 1...power {
    answer *= base
}
print("\(base) to the power of \(power) is \(answer)")
// 輸出 "3 to the power of 10 is 59049"
半開區(qū)間運算符

半開區(qū)間運算符(a..<b)定義一個從ab但不包括b?的區(qū)間
之所以稱為半開區(qū)間,是因為該區(qū)間包含第一個值而不包括最后的值。
半開區(qū)間的實用性在于當你使用一個從 0 開始的列表(如數(shù)組)時,非常方便地從0數(shù)到列表的長度

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

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

閉區(qū)間操作符有另一個表達形式,可以表達往一側(cè)無限延伸的區(qū)間 —— 例如,一個包含了數(shù)組從索引 2 到結(jié)尾的所有值的區(qū)間。在這些情況下,你可以省略掉區(qū)間操作符一側(cè)的值。這種區(qū)間叫做單側(cè)區(qū)間,因為操作符只有一側(cè)有值

let names = ["Anna", "Alex", "Brian", "Jack","Fucy","Nacy","Lugy"]
let count = names.count
for j in [...4] {

    print(names[j])
}
/*
["Anna", "Alex", "Brian", "Jack", "Fucy"]
*/
let names = ["Anna", "Alex", "Brian", "Jack","Fucy","Nacy","Lugy"]
let count = names.count
for j in [1...] {

    print(names[j])
}
/*
["Alex", "Brian", "Jack", "Fucy", "Nacy", "Lugy"]
*/

半開區(qū)間操作符也有單側(cè)表示形式
[..<2] [..<2]

邏輯運算符

  • 邏輯非(!a)
  • 邏輯與(a && b)
  • 邏輯或(a || b)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容