と拡張を適用しようとしたとき、これは失敗している理由を私は理解していないプロトコルエラーに準拠していません:はPAT
import Foundation
import simd
protocol TestProtocol {
associatedtype ElementType
func reduce_add(x:Self) -> ElementType
}
extension float2 : TestProtocol {
typealias ElementType=Float
}
私は「タイプ 『するfloat2は』プロトコルに準拠していない得る 『TestProtocol』 "プレイグラウンドでのエラーです。具体的には、私に語った:
/// Sum of the elements of the vector.
@warn_unused_result
public func reduce_add(x: float2) -> Float
と私はreduce_add(float2(2.4,3.1))
を呼び出す場合、私は右の結果を得る:
Playground execution failed: Untitled Page.xcplaygroundpage:3:1: error: type 'float2' does not conform to protocol 'TestProtocol' extension float2 : TestProtocol {^Untitled
Page.xcplaygroundpage:6:10: note: protocol requires function 'reduce_add' with type 'float2 -> ElementType' func reduce_add(x:Self) -> ElementType
私はsimd
インターフェースを見てみると、しかし、私は参照してください。 ElementTypeはtypealias
でFloat
です。
ここで私は間違っていますか?
Ah。私はあなたがグローバルなオペレータを必要とすることができるという事実が混乱していると思うが、明らかに特殊なケースである。だから私の目標はベクトル型を渡って一般化することです、私はインスタンス関数としてsimdライブラリ全体をミラーリングする必要がありますか? – Omegaman
@Omegaman:はい。 (少なくとも現時点では私の考えは変わりません。) –