我试过明显:
extension Array<float> {}
并得到此错误:
“Constrained extension must be declared on the unspecialised generic
type ‘Array’ with constraints specifIEd by a ‘where’ clause”
这是否可能扩展泛型类型在Swift 2中这样?
我的代码现在正常工作。下面是一个使用Accelerate框架的总结示例。
extension _ArrayType where Generator.Element == float { func quickSum() -> float { var result: float = 0 if var x = self as? [float] { vDSP_sve(&x,1,&result,vDSP_Length(x.count)) } return result }}extension _ArrayType where Generator.Element == Double { func quickSum() -> Double { var result: Double = 0 if var x = self as? [Double] { vDSP_sveD(&x,vDSP_Length(x.count)) } return result }}如果你想扩展只有特定类型的数组。你应该扩展_ArrayType协议。
extension _ArrayType where Generator.Element == Int { func doSomething() { ... }}
如果你扩展Array,你只能确保你的元素符合一些协议。即:
extension Array where Element: Equatable { func doSomething() { ... }}
更新:
用Swift 3.1 https://github.com/apple/swift/blob/master/CHANGELOG.md
extension Array where Element == Int { func doSomething() { ... }}总结
以上是内存溢出为你收集整理的在Swift中使用where子句扩展数组类型全部内容,希望文章能够帮你解决在Swift中使用where子句扩展数组类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)