基本运算符

一、基本运算符

1、赋值运算符:  =

2、算数运算符: +  -  *  /   

3、求余运算符:%      即: a = (b × 倍数) + 余数

4、浮点数求余计算:   例如 8%2.5      等于3余0.5,所以结果就是0.5

5、自增和自减运算 

  当++前置的时候,先自増再返回。
  当++后置的时候,先返回再自增。

例如:       var a = 0
                   let b = ++a // a 和 b 现在都是 1
                   let c = a++ // a 现在 2, 但 c 是 a 自增前的值 1


6、一元负号运算符

数值的正负号可以使用前缀-(即一元负号)来切换:
let three = 3
let minusThree = -three       // minusThree 等于 -3
let plusThree = -minusThree   // plusThree 等于 3, 或 "负负3"


7、一元正号运算符

一元正号(+)不做任何改变地返回操作数的值。


let minusSix = -6
let alsoMinusSix = +minusSix  // alsoMinusSix 等于 -6
虽然一元+什么都不会改变,但当你在使用一元负号来表达负数时,你可以使用一元正号来表达正数,如此你的代码会具有对称美。


8、复合赋值:+=

例如:var a = 1

            a += 2 // a 现在是 3


9、比较运算符

等于(a == b)
不等于(a != b)
大于(a > b)
小于(a < b)
大于等于(a >= b)
小于等于(a <= b)


10、三目运算符:  问题 ? 答案1 : 答案2

例如:

let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight 现在是 90


11、空合运算符:??

表达式a必须是Optional类型
默认值b的类型必须要和a存储值的类型保持一致

例如:

a != nil ? a! : b

上述代码使用了三目运算符。当可选类型a的值不为空时,进行强制解封(a!)访问a中值,反之当a中值为空时,返回默认值b。无疑空合运算符(??)提供了一种更为优雅的方式去封装条件判断和解封两种行为,显得简洁以及更具可读性。

例如:

下文例子采用空合并运算符,实现了在默认颜色名和可选自定义颜色名之间抉择:
let defaultColorName = "red"
var userDefinedColorName:String?   //默认值为nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
//userDefinedColorName的值为空 ,所以colorNameToUse的值为`red`


另一种情况,分配一个非空值(non-nil)给 userDefinedColorName,再次执行空合运算,运算结果为封包在userDefaultColorName中的值,而非默认值。
userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
//userDefinedColorName非空,因此colorNameToUsede的值为绿色


12、闭区间运算符

定义一个包含从a到b(包括a和b)的所有值的区间,b必须大于a

例如:

for index in 1...5 {
    println("\(index) * 5 = \(index * 5)")
}
// 1 * 5 = 5
// 2 * 5 = 10
// 3 * 5 = 15
// 4 * 5 = 20
// 5 * 5 = 25


13、半开区间运算符:a..<b

定义一个从a到b但不包括b的区间

半开区间的实用性在于当你使用一个0始的列表(如数组)时,非常方便地从0数到列表的长度。


let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    println("第 \(i + 1) 个人叫 \(names[i])")
}
// 第 1 个人叫 Anna
// 第 2 个人叫 Alex
// 第 3 个人叫 Brian
// 第 4 个人叫 Jack
数组有4个元素,但0..<count只数到3(最后一个元素的下标),因为它是半开区间。


14、逻辑运算

逻辑非(!a):逻辑非运算(!a)对一个布尔值取反,使得true变false,false变true。

例如:

let allowedEntry = false
if !allowedEntry {
    println("ACCESS DENIED")
}
// 输出 "ACCESS DENIED"
if !allowedEntry语句可以读作 "如果 非 alowed entry。",接下一行代码只有在如果 "非 allow entry" 为true,即allowEntry为false时被执行。


逻辑与(a && b):逻辑与(a && b)表达了只有a和b的值都为true时,整个表达式的值才会是true,只要任意一个值为false,整个表达式的值就为false。

例如:

let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
    println("Welcome!")
} else {
    println("ACCESS DENIED")
}
// 输出 "ACCESS DENIED"


逻辑或(a || b):逻辑或(a || b)是一个由两个连续的|组成的中置运算符。它表示了两个逻辑表达式的其中一个为true,整个表达式就为true。

例如:

let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
    println("Welcome!")
} else {
    println("ACCESS DENIED")
}
// 输出 "Welcome!"


15、逻辑运算符组合计算

例如:

if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
    println("Welcome!")
} else {
    println("ACCESS DENIED")
}
// 输出 "Welcome!"

我们来解读一下:
如果我们输入了正确的密码并通过了视网膜扫描; 或者我们有一把有效的钥匙; 又或者我们知道紧急情况下重置的密码,我们就能把门打开进入。前两种情况,我们都不满足,所以前两个简单逻辑的结果是false,但是我们是知道紧急情况下重置的密码的,所以整个复杂表达式的值还是true。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值