我想使用Accelerate框架来扩展[Float]和[Double],但是每一个都需要不同的实现。
我尝试了明显的方法:
extension Array<Float> {
}
并得到这个错误:
“必须在具有'where'子句指定约束的非专用泛型'Array'上声明受约束的扩展”
这样在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, 1, &result, vDSP_Length(x.count))
}
return result
}
}