を持って保証型の制約を定義する方法:スウィフトは - I型コード、次のしているのinit
struct MyStruct {
var v: Int = 1
}
func createInstance<T: Any>(type: T.Type) -> T
{
return type.init()
}
let myType = MyStruct.self
let instance = createInstance(type: myType)
私が保証するものではありませんので、これは動作しませんが、Tは、initを持っています。
Playground execution failed: error: MyPlayground.playground:76:12: error: type 'T' has no member 'init'
return type.init()
^~~~ ~~~~
しかし、型にinitがあることを保証するための制約をどのように定義できますか?
これらの構造体とクラスで実装する必要がある「初期化可能」プロトコルを使用できますか? – NRitH
実装する必要がある空のプロトコルだけを意味しますか?うーん、少し奇妙ですが、それは素晴らしいトリックのように聞こえる:)私はそれを試してみましょう。 – Dareon
'createInstance(type:)'で達成しようとしていることは何ですか?標準ライブラリには 'DefaultConstructible'(または同様の)プロトコルがないという理由があります。セマンティクスを伴わずに*ただ*初期化できることは意味がありません。私は[Protocols is Syntax of Bags](https://oleb.net/blog/2016/12/protocols-have-semantics/)の読書をお勧めします。 – Hamish