import Foundation
public
class Example001 {
public
func changeLength(of arrayOfInt: [Int], to newLength: Int) -> [Int] {
let oldLength = arrayOfInt.count
if oldLength == newLength {
return arrayOfInt
}
if oldLength < newLength {
var newArrayOfInt = [Int]()
newArrayOfInt.append(contentsOf: arrayOfInt)
for _ in oldLength ..< newLength {
newArrayOfInt.append(0)
}
return newArrayOfInt
}
return Array(arrayOfInt.prefix(newLength))
}
}
此方法changeLength()返回一个基于现有数组和新长度的数组。
无论新数组的长度小于,大于或等于原始数组,代码都可以正常工作。
但是我想知道在Swift 4中是否有更好的方法可以使它更紧凑。
答案 0 :(得分:1)
一个更快的版本是:
func changeLength(of arrayOfInt: [Int], to newLength: Int) -> [Int] {
if newLength < arrayOfInt.count {
return Array(arrayOfInt.prefix(newLength))
} else if newLength == arrayOfInt.count {
return arrayOfInt
} else {
return arrayOfInt + Array(repeating: 0, count: newLength - arrayOfInt.count)
}
}
或者,如果您想超级简洁:
func changeLength(of arrayOfInt: [Int], to newLength: Int) -> [Int] {
return Array(arrayOfInt.prefix(newLength)) + Array(repeating: 0, count: max(0, newLength - arrayOfInt.count))
}