Swift 3.0 基础运算符

来源:互联网 发布:电信宽带网络测速 编辑:程序博客网 时间:2024/06/06 09:09

一、赋值运算符 ( = )

let a = 10;var b = 5;b = a;  //现在 a 等于 10//定义一个元组合let touples = (x:2,y:5);  // 现在 x = 2,y= 5;if touples.x != touples.y{    print("不相等");}

二、算数运算符 (+、-、*、/(取整)、%(取余))

let c = 10;let d = 7;let e = c + d;     // 等于 17let f = c - d;     //等于 3let g = c * d ;    //等于70let h = c / d;     //等于1let j = c % d;     //等于3let k = c % (-d);  //等于3    注意:对负数求余,符号会被忽略

注意: + 可以用于字符串的拼接

let str01 = "hello,";let str02 = "world!";let str03 = str01+str02;print(str03);

三、一元正(负)号运算符

//一元负号运算符 (一元负号符(-)写在操作数之前,中间没有空格。)let one = 1;let minusOne = -one;       //等于 -3let plusOne = -minusOne;   //等于 3//一元正号运算符(一元正号符(+)不做任何改变地返回操作数的值)let minusSix = -6let alsoMinusSix = +minusSix  // alsoMinusSix 等于 -6

四、组合运算符

var two = 2;two += 1;                 // two = two + 1;print("tow = \(two)");two -= 1;                //  two = two - 1;print("tow = \(two)");

注意 :swift 3.0 移除了 自增了自减运算符

例如:
i++
swift 建议你这么写 : i += 1;

五、比较运算符

( 1 ) 等于 a == b 1 == 1 // true, 因为 1 等于 1
( 2 ) 不等于 a != b 2 != 1 // true, 因为 2 不等于 1
( 3 ) 大于 a > b 2 > 1 // true, 因为 2 大于 1
( 4 ) 小于 a < b 1 < 2 // true, 因为 1 小于2
( 5 ) 大于等于 a >= b 1 >= 1 // true, 因为 1 大于等于 1
( 6 ) 小于等于 a <= b 2 <= 1 // false, 因为 2 并不小于等于 1
( 7 ) 恒等于 对象a === 对象b
( 8 ) 恒不等于 对象a !== b
注意: 1)” ===” 和 “!==” 这两个比较符来判断两个对象是否引用同一个对象实例
2)当元组中的值可以比较时,你也可以使用这些运算符来比较它们的大小。
比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。
Swift 标准库只能比较七个以内元素的元组比较函数,如果你的元组元素超过七个时,你需要自己实现比较运算符。

//定义一个元组let oneTouples = (1,"apple");let twoTouples = (1,"bird");if oneTouples < twoTouples{    print("true");}else{    print("false");}

六、三目运算符
格式如: 问题 ? 答案 1 : 答案 2。
如果 问题 成立,返回 答案 1 的结果;反之返回 答案 2 的结果。

let contentHeight = 40;let hasHeader = true;let rowHeight = contentHeight + (hasHeader ? 50 : 20)print("rowHeight = \(rowHeight)");//输出 rowHeight =  90

七、空合运算符(a ?? b)
空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b。简短表达法 : a != nil ? a! : b
注意 :表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。

let defaultColorName = "red";var userDefinedColorName: String?   //默认值为 nilvar colorNameToUse = userDefinedColorName ?? defaultColorName;print("colorNameToUse = \(colorNameToUse)");let defaults = "cyan";var getString:String? = "yellow";colorNameToUse = getString ?? defaults;print("colorNameToUse = \(colorNameToUse)");

输出结果:

colorNameToUse = redcolorNameToUse = yellow

无疑空合运算符(??)提供了一种更为优雅的方式去封装条件判断和解封两种行为,显得简洁以及更具可读性。

八、区间运算符

// 闭区间运算符闭区间运算符(a...b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 bfor index in 1...5{    print("\(index)*5 = \(index*5)");}//半开区间运算符半开区间运算符(a..<b)定义一个从 a 到 b 但不包括 b 的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。let names = ["Anna", "Alex", "Brian", "Jack"]let count = names.countfor i in 0..<count {    print("第 \(i + 1) 个人叫 \(names[i])")}

九、逻辑运算符
1、逻辑非(!a) 逻辑非运算符(!a)对一个布尔值取反

let allowedEntry = falseif !allowedEntry {    print("ACCESS DENIED")}

2、逻辑与(a && b) 逻辑与运算符(a && b)表达了只有 a 和 b 的值都为 true 时,整个表达式的值才会是 true。

let enteredDoorCode = truelet passedRetinaScan = falseif enteredDoorCode && passedRetinaScan {    print("Welcome!")} else {    print("ACCESS DENIED")}

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

let hasDoorKey = falselet knowsOverridePassword = trueif hasDoorKey || knowsOverridePassword {    print("Welcome!")} else {    print("ACCESS DENIED")}

4、组合运算符
我们可以组合多个逻辑运算符来表达一个复合逻辑,为了一个复杂表达式更容易读懂,在合适的地方使用括号来明确优先级是很有效的,虽然它并非必要的。
注意: Swift 逻辑操作符 && 和 || 是左结合的,这意味着拥有多元逻辑操作符的复合表达式优先计算最左边的子表达式。

if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {    print("Welcome!")} else {    print("ACCESS DENIED")}
0 0
原创粉丝点击