第2章:基本操作符
2019-01-31 本文已影响0人
行知路
swift提供了大多数的标准C运算符,并对某些运算符进行了改进同时增加了部分新的运算符。
一、赋值运算符
赋值运算符与C中的赋值运算符大部分一致,下述部分是不一致的地方。
// 此处赋值号右侧的是一个元组,把这个元组的值赋值为x、y
let ( x , y ) = ( 1 , 2 )
// 此处无法通过编译
// if x = y在C中这个语句是合法的,但是由于其容易误用且难以发现此类误用
// 在swift中取消了赋值运算符返回值的能力
if x = y {
}
二、算术运算符
- swift的算数运算符在发现计算会溢出时,则会触发编译错误
- String类型支持通过+号进行链接
"hello, " + "world" // 结果是 "hello, world"
- swift也支持复合算数运算符(+=、-=、*=、/=)
三、取模运算符
9 % 4 // 结果是 1
-9 % 4 // 结果是 -1,原理是-9 =( 4 × -2 )+ -1
// a % b 或者 a % -b 所得结果总是相同,因此此时忽略b的正负
四、一元减号运算符
// 对给定的值取相反的符号
let three = 3
let minusThree = -three // minusThree -3
let plusThree = -minusThree // plusThree 3
五、关系运算符
支持标准的关系运算符
- 等于( a == b )
- 不等于( a != b )
- 大于( a > b )
- 小于( a < b )
- 大于或等于( a >= b )
- 小于或等于( a <= b )
还支持基于元组的关系运算符
// 此时支持短路计算,即逻辑运算符中的短路运算
( 1 , "zebra" ) < ( 2 , "apple" ) // true because 1 is less than 2; "zebra" and "apple" are not compared
( 3 , "apple" ) < ( 3 , "bird" ) // true because 3 is equal to 3, and "apple" is less than "bird"
( 4 , "dog" ) == ( 4 , "dog" ) // true because 4 is equal to 4, and "dog" is equal to "dog"
六、三元运算符
与C中的三元运算符相同。
let contentHeight = 40
let hasHeader = true
let rowHeight : Int
if hasHeader {
rowHeight = contentHeight + 50
} else {
rowHeight = contentHeight + 20
}
// 以上写法与以下写法相同
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + ( hasHeader ? 50 : 20 ) // 三元运算符 ?:
七、nil合并运算符
// ?? 就是nil合并运算符,示例如下
let defaultColorName = "red"
var userDefinedColorName : String ? // userDefinedColorName 是 nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName 是 nil, 所以 colorNameToUse 被设置为 "red"
八、范围运算符
// ...是闭区间范围运算符
for index in 1 ... 5 {
print ( " \ ( index )" ) // 输出1、2、3、4、5
}
// ..<是左闭右开范围运算符
for index in 1 ..< 5 {
print ( " \ ( index )" ) // 输出1、2、3、4
}
// 以下是一些简写形式
let names = [ "Anna" , "Alex" , "Brian" , "Jack" ]
for name in names [2...] {
print ( name )
}
// Brian
// Jack
for name in names [...2] {
print ( name )
}
// Anna
// Alex
// Brian
for name in names [..< 2 ] {
print ( name )
}
// Anna
// Alex
// range是一个范围,从Int.min开始,一直到5
let range = ...5
range . contains ( -1 ) // true
range . contains ( 0 ) // true
range . contains ( 4 ) // true
range . contains ( 7 ) // false
八、逻辑运算符
swift中的逻辑运算符与C中的完全相同