站在汇编角度深入了解 Swift(十六)

287 阅读1分钟

字面量

字面量协议

  • Swift 自带类型之所以能够通过字面量初始化,是因为它们遵守了对应的协议

字面量协议的运用

模式匹配

通配符模式

  • _ 匹配任何值
  • _? 匹配非 nil 值

元组模式

枚举 case 模式

  • if case 模式等价于只有一个 case 的 swiftch 语句
if age < 9 && age > 0 {
    
}
if case 0...9 = age {
    
}
switch age {
    case 0...9:
    print("0...9")
    default: break
}
let ages: [Int?] = [2, 3, nil, 5]
for case nil in ages {
    print("有 nil 值")
    break
}

可选模式

let age: Int? = 42
if case .some(let x) = age { print(x) }
if case let x? = age { print(x) }

类型转换模式

  • is 判断之后是不会进行类型强制转换的
    • 如果在里面强制转换的话,用 case let num as Int 就好了
let num: Any = 6
switch num {
    case is Int: 
    print("is Int", num)
    case let num as Int:
    default:
    break
}

表达式模式

  • ~=

where

  • 为模式匹配增加条件

思考

  1. 代码优化的部分可以用到