gpt4 book ai didi

swift - 如何获取符合 `Sequence` 的类型的计数?

转载 作者:搜寻专家 更新时间:2023-10-30 21:54:09 25 4
gpt4 key购买 nike

假设我有这段代码:

func work<S: Sequence>(sequence: S) {
// do stuff
}

我怎么知道sequence中有多少个元素?
我想要的明显版本效率很低:

var count = 0
for element in sequence {
count += 1
}

一定有更好的方法,对吧?

最佳答案

我认为没有更好的方法来满足 任意 类型序列类型。关于序列的唯一已知信息是是有一个 generate() 方法返回一个 GeneratorType,这反过来有一个 next() 方法。 next() 方法前进到下一个序列的元素并返回它,如果存在则返回 nil没有下一个元素。

请注意,根本不需要 next() 最终返回nil:一个序列可能有“无限”元素。

因此枚举序列是统计其数量的唯一方法元素。但这不必终止。因此答案可以也可以是:接受序列参数的函数不需要知道元素总数。

对于符合 CollectionType 的类型,您可以使用countElements() 函数(在 Swift 1.2 中重命名为 count())。

还有underestimateCount():

/// Return an underestimate of the number of elements in the given
/// sequence, without consuming the sequence. For Sequences that are
/// actually Collections, this will return countElements(x)
func underestimateCount<T : SequenceType>(x: T) -> Int

但这并不一定会返回元素的确切数量。

关于swift - 如何获取符合 `Sequence` 的类型的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28752743/

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