下面的代码无法编译,但我不知道该怎么做才能让它编译和运行。粘贴在操场上试一试。我希望它能两次打印“配置”。我的问题不是this的重复。我没有一系列符合协议的东西。我想测试一下它们是否符合要求,如果有的话就调用该方法。
我的目标是让它在数组中可以处理MyConfiguration对象的任何对象上调用configure,否则什么都不做。有什么想法吗?
protocol Configurable {
associatedtype Configuration
func configure(with configuration: Configuration)
}
struct MyConfiguration { }
class Base { }
class A: Base, Configurable {
func configure(with configuration: MyConfiguration) {
print("configured")
}
}
class B: Base { }
extension Array where Iterator.Element == Base {
func configure(with configuration: MyConfiguration) {
for each in self {
if let configurable = each as? Configurable {
configurable.configure(with: configuration)
}
}
}
}
let array: [Base] = [A(), B(), A()]
let conf = MyConfiguration()
array.configure(with: conf)