我想使用Accelerate框架扩展[Float]和[Double],但每个都需要不同的实现.
我试过了明显的事:
extension Array<Float> {
}
Run Code Online (Sandbox Code Playgroud)
并得到此错误:
"必须在非特定的泛型类型'Array'上声明约束扩展,并使用'where'子句指定的约束"
以这种方式扩展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
}
}
Run Code Online (Sandbox Code Playgroud)