Swift支持大部分标准C语言的运算符, 且改进许多特性来减少常规编码错误. 如, 赋值符 = 不返回值, 以防止错把等号 == 写成赋值号 = 而导致Bug. 数值运算符( + , -, *, /, %等)会检测并不允许值溢出, 以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致的异常结果. 当然允许你选择使用Swift的溢出运算符来玩溢出. 具体使用请移步溢出运算符.
区别于C语言, 在Swift中你可以对浮点数进行取余运算( % ), 还提供了C语言没有的表达两数之间的值的区间运算符, ( a ..< b 和 a ... b ), 这方便我们表达一个区间内的数值.(注意 ..< 在之前的苹果文档中是 .. ,后来苹果更新了, ..< 易读性更高!)
1.取余运算符
//取余可以用浮点数
var aFloatValue = 1.0%2.0 //1.0
2.区间运算符
//区间运算符---不包含上界
var sumOfNotClose = 0
for i in 0 ..< 4{
sumOfNotClose++
}
sumOfNotClose //4
//区间运算符---包含上界
var sumOfClose = 0
for i in 0 ... 4{
sumOfClose++
}
sumOfClose //5
基本数值运算符跟其他语言跟其他语言中的数值运算符基本上一样,不过
3.+运算符可以用于字符串拼接操作:
var aStr = "Hello" + " everyone"
单目负号-、单目正号+、复合赋值(+=、-=)、比较运算符、三目条件运算符、逻辑运算符等跟其他语言基本没有差别,就省略介绍。
4.nil合并运算符 a ?? b(这是苹果后来加的)
a ?? b 首先a和b的类型要一样,其次a是可选类型,如果a为nil,那么就把默认值b赋值给a,否则a保持它原有的值。
是 a ! = nil a! : b的一种简写。
//nil合并运算
let defaultColorName = "red"
var userDefinedColorName:String? //默认是nil
var colorNameToUse = userDefinedColorName ?? defaultColorName //red
nil合并运算符非常简洁,易读性也非常好。
总结:
苹果的基本运算符跟其他语言包括OC没有太大的区别,不同点总结如下:
1. 赋值符 = 不返回值, 以防止错把等号 == 写成赋值号 = 而导致Bug。从源头上减少了Bug的数量。就像代码中可以不写分号一样。
2.取余运算%可以对浮点数进行取余了。
3.新增的区间运算符..<和... ,在循环中使用非常的方便,而且易读性非常好,越来越人性化了。
4.+运算符可以很方便的对字符串进行拼接操作了。
5.nil合并运算符对三元运算符进行了进一步简化。
参考:
1.The Swift Programming Language
2.The Swift Programming Language--语言指南--基础部分
注意:以苹果官方的The Swift Programming Language文档为主!因为我发现苹果有时候会有一些小小的改动,比如 ..< 运算符之前是 .. 运算符,下面的cocoachina的文章翻译的时候还是 ..运算符。此外苹果还新增了nil合并运算符 a ?? b。所以说,还是要时常关注苹果官方的文档更新。