swift5(2)运算符
2020-02-25 本文已影响0人
C_G__
感谢作者
https://www.jianshu.com/p/66a6012d577d
// 运算符
let x = 1;
let (y, z) = (1, 2);
1 + 2 // equals 3
5 - 3 // equals 2
2 * 3 // equals 6
10.0 / 2.5 // equals 4.0
"hello, " + "world" // equals "hello, world"
9 % 4 // equals 1
-9 % 4 // equals -1
let three = 3;
let minusThree = -three; // minusThree equals -3
let plusThree = -minusThree; // plusThree equals 3, or "minus minus three"
let minusSix = -6;
let alsoMinusSix = +minusSix; // alsoMinusSix equals -6
var d = 1;
d += 2; // a is now equal to 3
1 == 1 // true because 1 is equal to 1
2 != 1 // true because 2 is not equal to 1
2 > 1 // true because 2 is greater than 1
1 < 2 // true because 1 is less than 2
1 >= 1 // true because 1 is greater than or equal to 1
2 <= 1 // false because 2 is not less than or equal to 1
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个元素
// 只能用于可比较元素,元素存在布尔值时不能比较
// 编译错误
// if ("blue", false) < ("purple", true) {//!< 编译器直接会报错
// print("Binary operator '<' cannot be applied to two '(String, Bool)' operands")
// }
// 对应下标的元素逐个比较
// 第一个元素不相同,则按第一个比较返回结果
// 如果第一个相同,则比较第二个元素,以此类推。
(1, "zebra") < (2, "apple") // true,第一个已返回布尔值
(3, "apple") < (3, "bird") // true,第一个相同,比较第二个
(4, "dog") == (4, "dog") // true,都相同
// 身份运算符
// ===:
// !==:
let obj1 = NSView.init();
let obj2 = NSView.init();
let obj3 = obj2;
let (o1, o2, o3) = (obj1, obj2, obj3);
if o1 === o2 {
print("同一个对象");
} else{
print("不同对象"); // 结果
}
if o3 === o2 {
print("同一个对象"); // 结果
} else{
print("不同对象");
}
// 可Nil合并(Nil-Coalescing)运算符 ??
// 解包可选a;如果a为nil,则返回默认值b,否则返回a。
// 表达式中a始终是可选类型。并且b必须与a的类型匹配。
let nila = a ?? b;
// 封闭范围运算符(Close Range Operator)
// ...
for item in 1...8 {
print(item); //!< 打印 12345678
}
// 半开范围运算符(Half-Open Range Operator)
// ..<
let array = ["i","am","zhangfei"];
for index in 0 ..< array.count { //!< 遍历数组
print("索引:\(index),对应字符串:\(array[index])")
}
// 直接输出字符串,形式
for str in array[0 ..< array.count] {
print(str);
}
print("*************");
// 局部(单面/侧)范围(One-Sided Ranges)
// 直接输出字符串 形式1
for str in array[...] {
print(str);
}
print("*************");
// 直接输出字符串 形式2
// 此处`1`:0 < `1` < array.count-1
for str in array[1...] {
print(str);
}
print("*************");
// 运行时崩溃,数组下标越界
// for str in array[-1...] {
// print(str);
// }
// print("*************");
// 直接输出字符串 形式3
// 此处`(array.count-1)`:0 < `(array.count-1)` < array.count-1
for str in array[...(array.count-1)] {
print(str);
}
print("*************");
// 运行时崩溃,数组下标越界
// for str in array[...8] {
// print(str);
// }
// print("*************");
let range = ...5;
range.contains(7); // false
range.contains(4); // true
range.contains(-1); // true
// let range2 = 0...;
// for i in range2 {//!< 代码无限期的执行
// print(i);
// }