在斯威夫特,我知道类型是自己的类,但我有一个困难的工作,使这一点。
Array
类型,每个类型都符合一个协议(因此它实际上是
,它指定一个静态“工厂”函数。
这将允许我将一组类与一个实例相关联,以便该实例可以在“工厂”中循环,并实例化与该实例关联的类。
protocol A {
static func makeAStat() -> A
func makeADyn() -> A
}
struct APrime: A {
static func makeAStat() -> A {
return Self()
}
func makeADyn() -> A {
return Self.makeAStat()
}
}
let instanceOne = APrime.makeAStat()
let instanceTwo = APrime().makeADyn()
let arrayOf1 = [APrime()]
let instance3 = arrayOf1[0].makeADyn()
//let arrayOf2: [A.Type] = [APrime]
//let instance4 = arrayOf2[0].makeAStat()
注意这两行注释。他们会破坏操场,但我想让类似的东西工作,所以我可以说“这是一个WidgetPlus对象,所以它可以从这三种类型中选择作为处理程序。”
有人建议我最好的方法来达到这个目的吗?