gpt4 book ai didi

swift - Swift 词典中的 underestimatedCount

转载 作者:IT王子 更新时间:2023-10-29 05:37:10 27 4
gpt4 key购买 nike

根据文档,Swift 的 Dictionary 类型具有名为 underestimatedCount 的属性:

A value less than or equal to the number of elements in the collection.

有人知道为什么在维斯特洛这被认为有用吗??!

让我感到困惑...

最佳答案

总结:从技术上讲,underestimatedCount属于Sequence,被Collection继承,而字典Dictionary 不会覆盖返回零的默认实现。


查看源代码,似乎 underestimatedCount 被用作一个指标,用于确定向可变集合添加新项目时的增长量。

这是来自 StringCore.Swift 的片段:

public mutating func append<S : Sequence>(contentsOf s: S)
where S.Iterator.Element == UTF16.CodeUnit {

...........

let growth = s.underestimatedCount
var iter = s.makeIterator()

if _fastPath(growth > 0) {
let newSize = count + growth
let destination = _growBuffer(newSize, minElementWidth: width)

同样,来自StringCharacterView.swift :

public mutating func append<S : Sequence>(contentsOf newElements: S)
where S.Iterator.Element == Character {
reserveCapacity(_core.count + newElements.underestimatedCount)
for c in newElements {
self.append(c)
}
}

或者更好,来自 Arrays.swift.gyb :

public mutating func append<S : Sequence>(contentsOf newElements: S)
where S.Iterator.Element == Element {
let oldCount = self.count
let capacity = self.capacity
let newCount = oldCount + newElements.underestimatedCount

if newCount > capacity {
self.reserveCapacity(
Swift.max(newCount, _growArrayCapacity(capacity)))
}
_arrayAppendSequence(&self._buffer, newElements)
}

奇怪的是,我只能在 Sequence 中找到 underestimatedCount 的一个实现。 , 而那个返回零。

此时 underestimatedCount 似乎对集合/序列的自定义实现具有更多值(value),至于标准 Swift 集合,Apple 已经对这些集合的增长有了很好的了解。

关于swift - Swift 词典中的 underestimatedCount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39112934/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com