Я хотел бы использовать платформу Accelerate для расширения [Float] и [Double], но каждый из них требует другой реализации.
Я попробовал очевидное:
extension Array<Float> {
}
и получить эту ошибку:
«Ограниченное расширение должно быть объявлено для неспециализированного универсального типа «Массив» с ограничениями, указанными в предложении «где»
Можно ли таким образом расширить универсальные типы в 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
}
}