私はシングルタイプの2つのサブセットの機能を開発しています。例えば。果物。私は以下のように果物のための2つの列挙型を持っている:すぐに辞書のキーとしてプロトコルを使用することができません
enum SourFruits: String {
case Grape, Orange, Lemon
}
enum SweetFruits: String {
case Watermelon, Banana, Apple
}
は私がプロトコル使用しています私の実装では、単一の種類としてこれら2を使用するには:ここでは今
protocol Fruits {
}
extension SweetFruits: Fruits {
}
extension SourFruits: Fruits {
}
をである私の実装は次のようになります。
func doCommonOnFruit(fruit: Fruits) {
//Do common
}
func doSomeThingWithSourFruit(fruit: SourFruits) {
doCommonOnFruit(fruit)
// Do specific
}
func doSomeThingWithSweetFruit(fruit: SweetFruits) {
doCommonOnFruit(fruit)
// Do specific
}
これは正常に動作しますが、私はキーとしてマップにそれを追加しようとすると:
let map: [Fruit : String] = [:]
エラーメッセージ:Type 'Fruit' does not confirm to protocol 'Hashable'
。私の地図には、どんなもの(甘いものや酸っぱいのものかをキーにするもの)これを達成する方法。
フルーツにHashable
を実装しようとしましたが、機能しませんでした。これで私を助けてください。
「フルーツでハッシャブルを実装しようとしましたが、機能しませんでした」あなたが試したものを教えてください。 Hashableを実装する方法があります、多分あなたは何か間違っていました。 – Moritz