Swift 4.1
版本新特性
条件遵循
自动合成 Equatable 和 Hashable
用 compactMap 代替 flatMap
#canImport 检查
targetEnvironment(simulator) 条件
关联类型的递归约束