1
所以我想創建符合特定協議的實例。我想創建符合TestProtocol的A或其他類的實例。我不能在Playground中運行這段代碼,所以我不知道什麼是錯的?或者更好,這應該如何解決?使用泛型存儲和生成類的實例
protocol TestProtocol {
init(value: Int)
}
class A : TestProtocol {
init() {}
required init(value: Int) {
}
}
func generateWithInstances<T : TestProtocol>(item: T, #numberOfInstances: Int) -> [T] {
var list: [T] = []
for index in 1...numberOfInstances {
list.append(T(value: index))
}
return list
}
var list: [TestProtocol] = []
let instanceOfA = A()
list.extend(generateWithInstances(instanceOfA, numberOfInstances: 10))
更新
Array
extend
s不支持多態性(兩個陣列之前和之後延伸必須是相同的類型)。
extension Array {
...
mutating func extend<S : SequenceType where T == T>(newElements: S)
...
}