只列出與Swift和C語言不一樣用法或者一些在C中不常見的用法
元組賦值
let (x,y) = (1,2)
不同于C和Objective-C在,Swift中,賦值操作不返回一個(gè)值,所以以下操作是不允許的
if x=y { //錯(cuò)誤,x=y不返回值.(注意賦值操作是`=`,判等操作是`==`)
}
溢出
和C,Objective-C不同,Swift默認(rèn)不允許溢出操作,如果需要溢出,使用溢出操作符
a &+b
字符串相加
在Swift中,支持字符創(chuàng)相加
"hello, "+"world"
元組比較
你同樣可以比較擁有同樣數(shù)量值的元組,只要元組中的每個(gè)值都是可比較的散怖。比如說紫皇, Int
和 String
都可以用來比較大小旭斥,也就是說 (Int,String)
類型的元組就可以比較赖捌。一般來說, Bool
不能比較呛凶,這意味著包含布爾值的元組不能用來比較大小彪杉。
元組以從左到右的順序比較大小,一次一個(gè)值檩淋,直到找到兩個(gè)不相等的值為止芬为。如果所有的值都是相等的,那么就認(rèn)為元組本身是相等的蟀悦。比如說:
(1, "zebra") < (2, "apple") // true ,因?yàn)?<2
(3, "apple") < (3, "bird") // true 因?yàn)?等于2并且"apple" 小于 "bird"
(4, "dog") == (4, "dog") // true 因?yàn)?和4相等,dog和dog相等
從第一個(gè)例子看出,如果元組前面的值已經(jīng)決出大小了,就不用進(jìn)行后面的比較了.
合并空值操作符(??
操作符)
a ?? b
如果可選項(xiàng)a是有值的,則展開,如果a是沒有值的,使用b的值.
相當(dāng)于以下操作
a! = nil ? a!:b
用例
let defualtColorName="red"
var userDefinedColorName:String?
var colorNameToUse = userDefinedColorName ?? defualtColorName
區(qū)間運(yùn)算符
-
...
:閉區(qū)間
for index in 1...5 {
print("\(index) times 5 is \(index*5)")
}
/ 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
-
..<
或者..>
:開區(qū)間
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
print("Person \(i + 1) is called \(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack
其他
let range = ...5
range.contains(7) // false
range.contains(4) // true
range.contains(-1) // true