Swift 如何使用带有不同对象的`repeating:count:`初始化数组?
令人惊讶的是,下面的代码打印的是相同的,而初始化器每次都应该调用Swift 如何使用带有不同对象的`repeating:count:`初始化数组?,swift,Swift,令人惊讶的是,下面的代码打印的是相同的,而初始化器每次都应该调用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") } 我只是为了这个做了一个扩展 extensi
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..<i).map(elementGenerator)
}
}
class Z {
var i: Int = 0
}
let z = Array(generating: { _ in Z() }, count: 10)
print(z)
扩展数组{
///创建一个新数组,其值由给定闭包生成。
///-参数:
///-计数:要生成的元素数
///-elementGenerator:生成元素的闭包。
///元素将被放入其中的索引
///插入的对象被传递到闭包中。
公共init(生成元素生成器:(Int)->元素,计数:Int){
self=(0..我为此做了一个扩展
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..<i).map(elementGenerator)
}
}
class Z {
var i: Int = 0
}
let z = Array(generating: { _ in Z() }, count: 10)
print(z)
扩展数组{
///创建一个新数组,其值由给定闭包生成。
///-参数:
///-计数:要生成的元素数
///-elementGenerator:生成元素的闭包。
///元素将被放入其中的索引
///插入的对象被传递到闭包中。
公共init(生成元素生成器:(Int)->元素,计数:Int){
self=(0..self.index返回零。您能给我看一下您的测试用例吗?我刚刚用init(generating elementGenerator):(Int)->Element,count:Int)
修复了错误(称为generating),并用let z=[z](generating:{inz()},count:10)进行了尝试
.Array是空的。运气不好。self.indexs
在你的init
中返回一个空范围。我用Swift 3.1进行了测试。哦,是的,我在玩它,忘了引用那个部分。它现在被修复了。self.indexs返回零。你能给我看一下你的测试用例吗?我刚刚用init修复了打字错误(称为生成)(正在生成elementGenerator):(Int)->Element,count:Int)
并尝试使用让z=[z](正在生成:{inz()},count:10)
.Array为空。运气不好。init中的self.index
返回一个空范围。我用Swift 3.1进行了测试。哦,是的,我在玩它,忘了引用该部分。它现在已修复。