Swift 运算符

2021-01-13  本文已影响0人  孤雁_南飞
  1. 合并空值运算符(a ?? b) 如果可选项 a 有值则展开,如果没有值,是nil,则返回默认值b
  2. 表达式 a 必须是一个可选类型,表达式b 必须与a 的存储类型相同
  3. 合并空值运算符,实际上是三元运算符作用到 Optional 上的缩写 (a != nil ? a! : b)
  4. 如果 a 的值是非空,b的值将不会被考虑,也就是合并空值运算符是短路的

区间运算符

  1. 闭区间运算符(a...b)定义了从 a 到 b 的一组范围,并且包含 a 和 b,a的值不能大于b
for index in 1...5 {
    print("\(index) times 5 is \(index * 5)")
}
  1. 半开区间运算符(a..<b)定义了从 a 到 b 但不包括b 的区间
  2. 如同闭区间运算法,a的值也不能大于b,如果a == b,那返回的区间将会为空
let names = ["张三", "李四", "王二", "麻子"]
let count = names.count
for index in 0..<count {
    print("person \(index) is called \(names[index])")
}
  1. 闭区间有另外一种形式来让区间朝一个方向尽可能的远,这种区间叫做单侧区间
  2. 半开区间运算符同样可以有单侧形式,只需要写他的最终值
for name in names[2...] {
    print(name)
}
print("------------")
for name in names[...2] {
    print(name)
}
print("------------")
for name in names[..<2] {
    print(name)
}
  1. 单侧区间可以在其他上下文中使用,不仅仅是下标
  2. 不能遍历省略了第一个值的单侧区间,因为遍历根本不知道该从哪里开始,你可以遍历省略了最终值的单侧区间
let range = ...5
range.contains(7)  //false
range.contains(4)   //true
range.contains(-1)  //true
  1. 字符串范围也可以使用区间运算符
var welcome = "hello world"
let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
welcome.removeSubrange(range)
print(welcome)
  1. 通过reversed()方法,我们可以将一个正序循环变成逆序循环
for index in (1...6).reversed() {
    print(index)
}
  1. 区间运算符可以作用在Comparable 类型上,返回闭区间和半闭区间
var welcome = "hello,world!"
let intervar = "a"..."z"
for char in welcome {
    if !intervar.contains(String(char)) {
        print("\(char)不是小写字母")
    }
}
上一篇 下一篇

猜你喜欢

热点阅读