Estenda os tipos de matriz usando a cláusula where no Swift
Eu gostaria de usar a estrutura Accelerate para estender [Float] e [Double], mas cada uma delas requer uma implementação diferente.
Eu tentei o óbvio:
extension Array<Float> {
}
e obtenha este erro:
"A extensão restrita deve ser declarada no tipo genérico não especializado 'Array' com restrições especificadas por uma cláusula 'where'"
É possível estender tipos genéricos no Swift 2 dessa maneira?
Eu tenho o código funcionando como esperado agora. Aqui está um exemplo mostrando um somatório usando a estrutura 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
}
}