クラス型を取り入れてコンストラクタを返すファクトリ関数を作成したいので、後でそのクラスのインスタンスを作成するコンストラクタです。Swift:クラス型をパラメータとし、そのクラスのコンストラクタを出力するファクトリ関数を作成する
私はフルーツのサブクラスであるAppleとOrangeの2つのクラスがあるとします。それらは私が後で知るだけのunknownNumber
で初期化する必要があります。
class Apple: Fruit {
init(unknownNumber: Int) {
...
}
}
class Orange: Fruit {
init(unknownNumber: Int) {
...
}
}
私は後でunknownNumberで、この関数を呼び出すとフルーツの特定のサブクラスを初期化することができるように、クラスタイプにとるファクトリ関数を作成したいと思います。
//concept:
func makeFruit(typeOfFruit) -> (Int) -> Fruit {
return { (unknownNumber: Int) -> Fruit in
return typeOfFruit(unknownNumber)
}
}
そして、私が行うことができ、orangeFactoryを作成するには:
let orangeFactory = makeFruit(Orange)
// then at a later time when I have the unknown number
let orangeInstance = orangeFactory(unknownNumber)
私は単にunknownNumber
怠惰な変数を作成するためのオプションを認識していますが、私の特定の場合にはunknownNumber
だけではなく、数とそれには他のプロセスが含まれているので、構造を簡単に保つために、すべてのものを用意したらオブジェクトを作成したいと思います。
これはSwiftでも可能ですか?私はオンラインでしばらくの間研究してきましたが、直接的な答えは見つけられませんでした。どんな助けでも大歓迎です!
これは優れた答えです。この方法はとてもシンプルなようですが、Swiftのオブジェクト作成モデルの多くの小さな特質についての知識も必要です。私は今これを試しているし、それがうまくいくとすぐにあなたに知らせるでしょう! – gokeji