Swift3学习笔记:部分基础运算符

部分基础运算符

运算符有一元、二元和三元运算符:

  • 一元运算符在单个操作数(例如-a)上操作。一元前缀运算符出现在其操作数(例如!b)之前,一元后缀运算符出现在其操作数之后(如c!)。

  • 二元运算符操作两个操作数(例如2 + 3),并且是中缀,因为它们出现在它们的两个操作数之间。

  • 三元运算符操作三个操作数。像C一样,Swift只有一个三元运算符,三元条件运算符(a ? b : c)。

1. 分配运算符

  • 该赋值运算符(a = b)初始化或更新的价值a与价值b:
let b = 10
var a = 5
a = b
// a is now equal to 10
  • 如果赋值的右侧是具有多个值的元组,则其元素可以一次分解为多个常量或变量:
let (x, y) = (1, 2)
// x is equal to 1, and y is equal to 2
  • 与C和Objective-C中的赋值运算符不同,Swift中的赋值运算符本身不返回值。以下语句无效:
if x = y {
    // This is not valid, because x = y does not return a value.
}

此功能防止在实际使用(==)时意外使用(=)。通过使if x = y无效,避免这些类型的错误。

2. 算术运算符

  • 加法(+)
  • 加法运算符也支持String级联:

"hello, " + "world" // equals "hello, world"

  • 减法(-)
  • 乘法(*)

注意:与C和Objective-C中的算术运算符不同,Swift算术运算符不允许值默认溢出。可以通过使用Swift的溢出运算符(例如a &+ b)选择值溢出行为。溢出计算请看高级运算符。

溢出
var sum:Int8 = 0;
sum =   70 + 70;      //溢出报错
print(sum)
  • 除法(/)

3. 求余运算符

求余数,如例:

sum =   -9 % 4; //sum equals -1
sum =   9 % 4;  //sum equals -1
sum =   -9 % -4;    //sum equals -1
sum =   9 % -4; //sum equals -1

如上所示,a % b的结果和b的符号没有关系,只与a的符号有关系。

4. 复合分配操作符

sum += 2 // 等同于 sum = sum + 2
sum -= 2 // 等同于 sum = sum - 2
sum *= 2 // 等同于 sum = sum * 2
sum /= 2 // 等同于 sum = sum / 2

注意:复合分配操作符没有返回值,let b = a += 2是错误的。

5. 比较运算符

  • 等于(a == b)
  • 不等于(a != b)
  • 大于(a > b)
  • 小于(a < b)
  • 大于或等于(a >= b)
  • 小于或等于(a <= b)
  • Swift比较两个字符串是否完全相同时,可以直接使用(==),如:
let name = "world"
if name == "world" {
    print("hello, world")
} else {
    print("I'm sorry \(name), but I don't recognize you")
}
// Prints "hello, world", because name is indeed equal to "world".
  • 比较元素数量相同、且不超过7个元素、且不包括Bool值元素的元祖;
//当元祖中第一个元素已经得到比较结果时,就不在继续向下比较
(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"

6. 三元条件运算符

question ? answer1 : answer2,如果questiontrue,执行answer1;如果为false,执行answer2
格式:

question ? answer1 : answer2
//等同于下面的写法
if question {
    answer1
} else {
    answer2
}

示例:

let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight is equal to 90

7. Nil合并运算符

a ?? b,如果anil,返回b;如果a不为nil,返回a;
格式:

a ?? b
//等同于以下代码
a != nil ? a! : b

示例:

let defaultColorName = "red"
var userDefinedColorName: String?   // defaults to nil
 
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"

8. 范围运算符

  • 闭合范围运算符
    (a...b)a不能大于b,运行范围在[a,b]之间;
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
  • 半开范围运算符
    (a..a不能大于b,运行范围在[a,b)之间;
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..

9. 逻辑运算符

逻辑运算符修改或组合Bool逻辑值truefalse

  • 逻辑NOT(!a)
  • 逻辑AND(a && b)
  • 逻辑OR (a || b)

注意:&&||是左关联,及从左向右运算,但!的优先级高于&&||

参考链接

用来记录平时遇到的问题,不对之处还望指教。

你可能感兴趣的:(Swift3学习笔记:部分基础运算符)