the*_*end 5 arrays generics swift swift2
当元素是元组类型时,有没有办法扩展数组?
public extension Array where Element: (timeZoneName: String, formattedName: String){
}
Run Code Online (Sandbox Code Playgroud)
此声明返回 4 个错误:
- 语句不能以闭包表达式开头
- 大括号块语句是一个未使用的闭包
- 扩展中应为“{”
- 类型名称的预期标识符
我不知道显示的错误是否准确。有任何想法吗?
您不能添加特定类型,extension Array where Element == Int因为这会将通用数组转换为非通用版本。
你会看到类似的错误same-type requirement makes generic parameter 'Element' non-generic
编辑
它实际上看起来确实合法(至少在 Swift 2.2 中):
typealias tzTuple = (timeZoneName: String, formattedName: String)
扩展数组,其中元素:tzTuple {
}
不过,您必须看看这在运行时是否有效。
我在 Playground 中检查了这一点,目前 Playgrounds 尚未完全支持 Swift 2.2-dev
我建议这样做:
typealias tzTuple = (timeZoneName: String, formattedName: String)
扩展数组 {
func formattedName(index: Int) -> 字符串?{
如果 self[index] 是 tzTuple {
return (self[index] as!tzTuple).formattedName
}
返回零
}
}
会让你做
let foo = [(timezoneName: "PST", formattedName: "太平洋标准时间"),(timezoneName: "AEST", formattedName: "澳大利亚东部时间")] 打印(foo.formattedName(0))
| 归档时间: |
|
| 查看次数: |
1943 次 |
| 最近记录: |