私はGenericを使用してアプリケーションを開発しています。Swiftはジェネリッククラスのジェネリック関数を使用します
しかし、ジェネリッククラスのジェネリック関数を使用する際に問題があります。
ご存知のように、我々は一般的なように使用します。
class ClassA{
static func myFunction<Type>()->Type where Type : Protocol1, Type : Protocol2{
...
return Type
}
}
class ClassB{
func myFunction(){
let a : ClassC = ClassA.myFunction()
}
}
class ClassC : Protocol1, Protocol2{
}
をそして、これはうまく動作します。
class ClassA{
static func myFunction<Type>()->Type where Type : Protocol1, Type : Protocol2{
...
return Type
}
}
class ClassB<Type : Protocol1, Protocol2>{
func myFunction(){
let a : Type = ClassA.myFunction()
}
}
そして、このコードは私に、「推論することができませんでしたジェネリックパラメータ 『タイプ』」エラーを与える:
は、しかし、私は何をしたいです。
それは他のジェネリック型を推論するジェネリック型を使用することが可能です...
class ClassB<Type> where Type : Protocol1, Type : Protocol2{
しかし、それは全く使用しなかっ:
私が試しましたか?
問題は単に 'ClassB'です。これは* 2つの*汎用プレースホルダ、TypeとProtocol2を定義しています。あなたは、 'Protocol1'と' Protocol2'の両方に適合する*単一の*汎用プレースホルダ 'Type'を定義する' ClassB 'と言いたいと思っていました。 –
Hamish