Swiftでwhere節を使った配列型の拡張
2023-11-17 22:57:59
質問
Accelerateフレームワークを使用して[Float]と[Double]を拡張したいのですが、それぞれ別の実装が必要です。
当たり前のことをやってみた。
extension Array<Float> {
}
を実行すると、このようなエラーが発生します。
"制約付き拡張は、特殊化されていない一般的な 型 '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
}
}
どのように解決するのですか?
特定の型の配列のみを拡張したい場合。ArrayTypeプロトコルを拡張する必要があります。
extension _ArrayType where Generator.Element == Int {
func doSomething() {
...
}
}
を拡張した場合
Array
を拡張した場合、その要素が他の何らかのプロトコルに適合していることを確認するだけでよいのです。
extension Array where Element: Equatable {
func doSomething() {
...
}
}
更新されました。 Swift 3.1対応 https://github.com/apple/swift/blob/master/CHANGELOG.md
extension Array where Element == Int {
func doSomething() {
...
}
}
関連
-
[解決済み] 使用しているSwiftのバージョンを確認するにはどうすればよいですか?
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] Swift カスタムオブジェクトの配列をプロパティ値でソートする方法
-
[解決済み] Swiftでdispatch_onceのシングルトンモデルを使う
-
[解決済み] Swiftで範囲を作成する方法は?
-
[解決済み] Swiftのif letと論理AND演算子&&の使い分け
-
[解決済み] Swift- Remove Push Notification Badge number?
-
[解決済み] swiftでオプションのクロージャを作るにはどうしたらいいですか?
-
[解決済み] Codableクラスはプロトコルに準拠していない Decodable
-
[解決済み] オプションの文字列拡張子を追加するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swift - サブクラスでオーバーライドする必要があるクラスメソッド
-
[解決済み] Xcode 8.3 betaの「String interpolation produces a debug description for an optional value; did you mean to make this explicit?
-
[解決済み] Swift で型に表示されるテキスト表現を変更するにはどうしたらいいですか?
-
[解決済み] Swiftでオプショナルをダウンキャストする:as? タイプ、または as! タイプ?
-
[解決済み] SwiftUIでビューを動的に隠す
-
[解決済み] XcodeでFirebase Analyticsをオンにする
-
[解決済み] swiftでデータを16進文字列に変換する方法
-
[解決済み] Swiftで値を増加させた配列を作成する方法は?重複
-
[解決済み] Swiftで配列の最後の要素を取得する方法は?
-
[解決済み] Swiftのインライン条件?