【发布时间】:2016-01-12 21:21:11
【问题描述】:
我想创建一个工厂函数,它接受一个类类型并返回一个构造函数,以便以后可以使用该构造函数创建该类的实例。
假设我有两个类,Apple 和 Orange,它们都是 Fruit 的子类。它们需要使用 unknownNumber 进行初始化,我稍后才会知道。
class Apple: Fruit {
init(unknownNumber: Int) {
...
}
}
class Orange: Fruit {
init(unknownNumber: Int) {
...
}
}
我想创建一个接受 Class 类型的工厂函数,以便稍后调用此函数并使用 unknownNumber 初始化 Fruit 的特定子类。
//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 inheritance constructor swift2