Arrays 初始化并使用自定义对象内联填充数组

Arrays 初始化并使用自定义对象内联填充数组,arrays,swift,Arrays,Swift,我有一个包含10个对象的数组,所有对象都属于同一个自创类 let myArray = [CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject()] 我想知道是否有一种快捷方式可以创建像Python中那样的数组,我可以这样做 myArray

我有一个包含10个对象的数组,所有对象都属于同一个自创类

let myArray = [CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject(), CustomObject()]
我想知道是否有一种快捷方式可以创建像Python中那样的数组,我可以这样做

myArray = [CustomObject() for _ in range(10)]
我见过这些解决方案:但它们似乎不适用于非内置类

let myArray2 = (0...9).map{CustomObject()}
说“表达式的类型是无上下文的”

试试这个

let myArray = [CustomObject](repeating: CustomObject(), count: 10)
通过使用Array.init(repeating:)将只调用CustomObject初始化一次,然后将该对象多次插入数组

如果要对不同的对象使用Array.init(repeating:),我找到了一个线程和扩展

如果要将贴图和用于不同的对象

let myArray2 = (0...9).map { (_) -> CustomObject in
    CustomObject()
}
试试这个

let myArray = [CustomObject](repeating: CustomObject(), count: 10)
通过使用Array.init(repeating:)将只调用CustomObject初始化一次,然后将该对象多次插入数组

如果要对不同的对象使用Array.init(repeating:),我找到了一个线程和扩展

如果要将贴图和用于不同的对象

let myArray2 = (0...9).map { (_) -> CustomObject in
    CustomObject()
}
我的建议是在产生无限
Void
s的。然后,您不需要忽略闭包参数,允许您将初始值设定项直接用作命名闭包

AnyIterator{}.prefix(10.map)(CustomObject.init)
我的建议是在产生无限
Void
s的。然后,您不需要忽略闭包参数,允许您将初始值设定项直接用作命名闭包

AnyIterator{}.prefix(10.map)(CustomObject.init)

使用数组的解决方案。init(重复:)将只调用CustomObject初始值设定项一次,然后将该对象多次插入数组。这可能不是OP想要或期望的。不,我需要10个不同的对象。那么地图解决方案就是我需要的吗?@Duncan是的,你是对的。仅使用Array.init(重复:)对象初始值设定项一次。因此,在我看来,映射是一个很好的解决方案。如果你想对不同的对象使用Array.init(repeating:),我找到了一个线程,并使用
Array扩展了你的解决方案。init(repeating:)
将只调用CustomObject初始值设定项一次,然后将该对象多次插入数组。这可能不是OP想要或期望的。不,我需要10个不同的对象。那么地图解决方案就是我需要的吗?@Duncan是的,你是对的。仅使用Array.init(重复:)对象初始值设定项一次。所以在我看来,映射是一个很好的解决方案。如果你想对不同的对象使用Array.init(repeating:),我找到了一个线程和扩展