因此,我制作了一个称为重复的功能,该功能本质上是任何类型的,并重复了您想要多次的次数。它在Swift Playgrounds中完美无缺。
我在这里找出是否有不同/更简单的方法来做我正在做的事情。我问的原因是因为我正在TeamTreeHouse.com上迅速学习。据说此代码不起作用。因此,必须有更好的方法,而较少的代码或做我所做的完全相同的事情。这是我的代码。
func duplicate<T>(_ item: T,_ numberOfItems: Int) -> Array<T> {
var items = numberOfItems
var newArray: [T] = []
while( items > 0){
newArray.append(item)
items = items - 1
}
return newArray
}
Array
已经内置了,很难比这更短:
let arr1 = [Int](repeating: 0, count: 1000)
let arr2 = [String](repeating: "hello", count: 20)
如果要对元素进行一些自定义,请使用map
:
let arr3 = (0..<10).map { i -> String in
return i % 2 == 0 ? "hello" : "world"
}
如果您仍然坚持编写自己的循环:
func duplicate<T>(_ item: T,_ numberOfItems: Int) -> [T] {
guard numberOfItems > 0 else { return [T]() }
var newArray = [T]()
for _ in 0..<numberOfItems {
newArray.append(item)
}
return newArray
}
数组init方法
func duplicate<T>(_ item: T,_ numberOfItems: Int) -> [T] {
return [T](repeating: item, count: numberOfItems)
}
范围
func duplicate<T>(_ item: T,_ numberOfItems: Int) -> [T] {
return (0..<numberOfItems).map { _ in item }
}
foreach and Append
范围func duplicate<T>(_ item: T,_ numberOfItems: Int) -> [T] {
var newArray = [T]()
(0..<numberOfItems).forEach { _ in newArray.append(item) }
return newArray
}
循环和附加
func duplicate<T>(_ item: T,_ numberOfItems: Int) -> [T] {
var numberOfItems = numberOfItems
var newArray = [T]()
while(numberOfItems > 0) {
newArray.append(item)
numberOfItems -= 1
}
return newArray
}