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
}
}