1
のは、私たちのようにプロトコルを定義したとしましょう:今、私は追加したい汎用associatedtypeでプロトコルを拡張
enum Result<Value> {
case success(Value)
case error(Error)
}
:
protocol PAT {
associatedtype Element
}
と私はまた、列挙型(典型的な結果が)のように定義していますがResult<Value>
であるが、コンパイラがValue
を判断できない場合、コンパイルエラーが発生し、 "genericへの参照は引数を必要とする"というコンパイルエラーがトリガされるので、PAT
への拡張。ここ
は拡張のためのコードです:
extension Pat where Element == Result {
}
良い質問です。私は 'Element == Result'などを実行することは可能だと思いますが、値の上にジェネリックなまま残っている場合は、結果タイプに対して行うことはできません。一つの選択肢は、Resultを他のプロトコルに準拠させることです。次に、 'Element:OtherProto'と言うことができます。 –
jtbandes
@jtbandes Yep 'Result'は動作しますが、別のプロトコルに準拠していません。私はそれがいくつかのケースで動作することを意味しますが、あなたがメソッドや変数が 'Value'で動作したいのではないでしょう。それはsaisです: "値は、具体的なまたは汎用的なパラメータとしてのみ使用することができます" –
farzadshbfn
正確に拡張機能で何をしたいですか? – jtbandes