は、私は何もすることができstruct
を、持っていると言いますか?構造タイプのスウィフト設定
let points: Set<Cube> = Set()
// Type ‘Cube’ does not conform to protocol ‘Hashable’
ハッシュ可能を実装する方法はすぐにはわかりません。私が読んだところから、私はハッシュ関数を作る必要がありますが、それは構造体にあるプロパティの量では簡単には見えません。
func ==(lhs: Cube, rhs: Cube) -> Bool {
return lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z && lhs.width == rhs.width
}
Hashable
プロトコルのみがいる必要があります。あなたが一意にキューブを識別するすべてのプロパティ を使用して、2つの値を比較==
オペレータは 実装しなければならないように、すべての
良い説明!私を捨てていたのは、hashValueがすべての構造体に対して完全に一意でなければならないと思ったということです。主に最適化のように見えます!ありがとう! –
@JacobParker:構造体には2^256の異なる値があり、ハッシュ値は2^64しかないため、*ユニークではありません(ハッシュ値は通常はありません)。もちろん、それを独自のものにすることもできます。たとえば、すべてのコンポーネントが16ビットに制限されている場合、 '(x << 48)&+(y << 32)&+(z << 16)&+ width」となります。 –