1
私のタイプ拡張でタイプ間にいくつかの接続を導入したいと思います。以下の例を考えてみましょう。Swift拡張でラッパータイプの引数を使用する方法
struct Wrapper<T> {
var target: T?
}
struct Container<T> {
var wrapper: T?
}
extension Container where T == Wrapper<Any> {
func unwrap() -> Any {
return wrapper!.target!
}
}
これは、このようにコンパイルしますが、このように使用したい場合。上記のコード
var wrapper = Wrapper<String>()
wrapper.target = "foo"
var container = Container<Wrapper<String>>()
container.wrapper = wrapper
let string: String = container.unwrap()
だから明確にするために、コンパイル・エラー
Container<Wrapper<String>>' is not convertible to 'Container<Wrapper<Any>>
で終わります。拡張制約からの型引数が新しいメソッドの戻り型であることを示す方法はありますか?だから、それは現時点で
extension Container where T == Wrapper<NEWTYPEARGUMENT> {
func unwrap() -> NEWTYPEARGUMENT {
return wrapper!.target!
}
}
ありがとう、それは私が探していたものです – dagi12