[OK]をので、私は次のように定義されたいくつかのクラスがあります。なぜジェネリックスで即座に同じタイプの要件を満たすことができますか?何か方法はありますか?
public final class Process<InputType, OutputType, Memory>
を、私はInputTypeと OUTPUTTYPEがまったく同じタイプである場合にのみケースのための機能を利用できるようにしたいです。
extension Process where InputType == OutputType { }
をしかし、これはにつながる: は、だから私はこのように、このようにしようとした同じタイプの要件は、一般的なパラメータInputType
と OutputType
同等
だから、私は」になり
もう少し行ってこのようにしようとしました:
func bypass<SameType>() -> Process<SameType, SameType, Memory> where OutputType == InputType {}
しかし、これは全く同じエラーになります。 それでは、なぜジェネリック型を2つのジェネリック型が等価になるように定義することはできないのですか。私は、このルールに従わないとコンパイル時に失敗するこのケースに対してのみ利用可能な関数を定義したかったのです。
だから今、私はこのようなものを使用しています。具体的なクラスは、アクションのためにトリガされたとき、最終的にのみ実行時に失敗して作成されていない場合でも、だろうが
public static func bypass<SameType>() -> Process<SameType, SameType, Memory>
。
extension
またはfunction
をコンパイルしない(コンパイル時にエラーが発生する)同じタイプの汎用パラメータに定義する方法はありますか?更新:実装のいくつかの詳細が原因でコードが読めなくなるだろう逃していると、彼らはスウィフト4以降でコンテキスト
スイフト4が来るまで、これは私の問題を完全に解決します。 –