gpt4 book ai didi

swift - 为什么我无法在此特定方法中访问 self,但可以在其他方法中访问 self?

转载 作者:行者123 更新时间:2023-11-30 10:48:27 25 4
gpt4 key购买 nike

我在 SO 上看到过这个问题,但那里的答案似乎是在谈论返回 self 的函数。

我正在创建一个像这样开始的类扩展

extension Sequence where Element: Comparable {

func normalize() -> [Element] {
let count = self.count

}

}

我需要获取元素的数量 self.count 并在后续行中使用数组元素,例如 self[i] 但 Swift 提示说 self 不存在名为 count 的成员,并且不允许我在任何上下文中使用 self

我该怎么做?

最佳答案

在swift中,count属性不是在Sequence中定义的,而是在Collection中定义的,所以你需要从Collection进行扩展 相反。

extension Collection where Element: Comparable {
func normalize() -> [Element] {
let count = self.count

}
}

如果您还需要通过索引 (self[i]) 访问集合的值,则应该扩展 RandomAccessCollection,它同时提供 count (因为随机访问集合是一个集合)和下标函数。

extension RandomAccessCollection where Element: Comparable {
func normalize() -> [Element] {
let count = self.count

let first = self[startIndex]
let second = self[index(startIndex, offsetBy: 1)]

return [first, second]
}
}

注意:由于 RandomAccessCollection 索引不一定是 int,因此您必须使用 index(_:offsetBy:) 函数创建一个可以传入下标方法。

关于swift - 为什么我无法在此特定方法中访问 self,但可以在其他方法中访问 self?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55251123/

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