it-swarm-ja.com

プロトコルvsジェネリック

型を使用するクラスがありますが、その型について何も知る必要はありません。 Swiftでは、これを次の2つの方法のいずれかでコーディングできます。

protocol Type { }

class Class {
    // use Type
}

または

class Class<Type> {
    // use Type
}

クライアントが型に空のプロトコルを使用したい場合、空のプロトコルで汎用クラスをインスタンス化できるため、現在は後者に傾いています。

他の人の考えについてフィードバックをもらいたいのですが。

3
Daniel T.

この場合、ジェネリック型パラメーターを使用する必要があります。空のプロトコルを使用すると、ほぼAnyを使用するのと同じになります(Anyとは異なり、タイプはTypeに準拠するように手動で拡張する必要があります)。

Classに何かを入れると、Anyを使用した場合と同じように、その型情報が失われます。そのタイプの情報は役に立つかもしれません、それを捨てないでください!

3
JHZ