令人惊讶的是,下面的代码打印SAME
而初始化程序应该调用Z()
每次构造函数。如何使用此方法与不同的实例初始化数组Z
?
import Foundation
class Z {
var i: Int = 0
}
var z: [Z] = [Z](repeating: Z(), count: 10)
if z[0] === z[1] {
print("SAME")
} else {
print("NOT SAME")
}
我为此做了一个扩展!
extension Array {
/// Create a new Array whose values are generated by the given closure.
/// - Parameters:
/// - count: The number of elements to generate
/// - elementGenerator: The closure that generates the elements.
/// The index into which the element will be
/// inserted is passed into the closure.
public init(generating elementGenerator: (Int) -> Element, count: Int) {
self = (0..<count).map(elementGenerator)
}
}
class Z {
var i: Int = 0
}
let z = Array(generating: { _ in Z() }, count: 10)
print(z)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)