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

2017-02-19  本文已影响12人  肉身佛陀

部分基础运算符

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

1. 分配运算符

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
if x = y {
    // This is not valid, because x = y does not return a value.
}

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

2. 算术运算符

"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. 比较运算符

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".
//当元祖中第一个元素已经得到比较结果时,就不在继续向下比较
(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. 范围运算符

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..<count {
    print("Person \(i + 1) is called \(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack

9. 逻辑运算符

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

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

参考链接

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

上一篇 下一篇

猜你喜欢

热点阅读