Swift4基本运算

只列出与Swift和C语言不一样用法或者一些在C中不常见的用法

元组赋值
let (x,y) = (1,2)

不同于C和Objective-C在,Swift中,赋值操作不返回一个值,所以以下操作是不允许的

if x=y {  //错误,x=y不返回值.(注意赋值操作是`=`,判等操作是`==`)
}

溢出

和C,Objective-C不同,Swift默认不允许溢出操作,如果需要溢出,使用溢出操作符

a &+b

字符串相加

在Swift中,支持字符创相加

"hello, "+"world"

元组比较

你同样可以比较拥有同样数量值的元组,只要元组中的每个值都是可比较的。比如说, IntString 都可以用来比较大小,也就是说 (Int,String) 类型的元组就可以比较。一般来说, Bool 不能比较,这意味着包含布尔值的元组不能用来比较大小。

元组以从左到右的顺序比较大小,一次一个值,直到找到两个不相等的值为止。如果所有的值都是相等的,那么就认为元组本身是相等的。比如说:


(1, "zebra") < (2, "apple")   // true  ,因为1<2
(3, "apple") < (3, "bird")    // true  因为3等于2并且"apple" 小于 "bird"
(4, "dog") == (4, "dog")      // true 因为4和4相等,dog和dog相等

从第一个例子看出,如果元组前面的值已经决出大小了,就不用进行后面的比较了.

合并空值操作符(??操作符)


a ?? b

如果可选项a是有值的,则展开,如果a是没有值的,使用b的值.

相当于以下操作


a! = nil ? a!:b

用例


let defualtColorName="red"

var userDefinedColorName:String? 



var colorNameToUse = userDefinedColorName ?? defualtColorName

区间运算符

  • ...:闭区间
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

  • ..<或者..>:开区间
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..

其他

let range = ...5
range.contains(7)   // false
range.contains(4)   // true
range.contains(-1)  // true

你可能感兴趣的:(Swift4基本运算)