如何在没有RepeatedValues的情况下初始化具有最大容量的阵列?
var anotherThreeDoubles = Array(count: 3, repeatedValue: 2.5)
Run Code Online (Sandbox Code Playgroud)
就像在这个例子中使用repeatedValue一样.我们可以初始化没有价值吗?
cha*_*rit 19
CMD-在Xcode中单击Array类型会找到以下函数定义(以及doc注释):
/// Ensure the array has enough mutable contiguous storage to store
/// minimumCapacity elements in. Note: does not affect count.
/// Complexity: O(N)
mutating func reserveCapacity(minimumCapacity: Int)
Run Code Online (Sandbox Code Playgroud)
所以在某种程度上,您可以通过执行以下操作来告诉Array为给定容量预分配存储:
var results: [T] = []
results.reserveCapacity(100)
Run Code Online (Sandbox Code Playgroud)
理论上,append阵列上的百s应该比没有容量预留调用时表现更好.
但是,为了强制执行"最大"容量,没有办法在一个自定义代码中手动将nils加入到一个数组中,该数组Optional<T>的上限为@Bryan在问题注释中建议的最大大小.
更新:正如@chakrit所说,你reserveCapacity现在可以使用.这是在后来的测试版中添加的,现在可以在Swift的发布版本中使用.
Swift中的数组与Objective-C中的数组不同.在Swift中,您无法创建具有预分配内存但不包含元素的Array.只需创建一个Array()并添加任意数量的元素(在您的情况下为3).
如果你绝对必须这样做,那么使用NSMutableArray如下:
var anotherThreeDoubles = NSMutableArray(capacity: 3)
Run Code Online (Sandbox Code Playgroud)
我希望我能正确理解这个问题.随意进一步解释.
对于 Swift 3.0,Value 必须是可选类型
var arrImages = [UIImage?](repeating: nil, count: 64)
Run Code Online (Sandbox Code Playgroud)