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