为什么我无法通过这种特定方法访问自己,却被其他人允许?

时间:2019-03-19 22:53:29

标签: swift

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

我正在创建一个这样的类扩展名

extension Sequence where Element: Comparable {

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

  }

}

我需要获取元素self.count的数量,并在随后的行中使用数组元素,例如self[i],但是Swift抱怨说self尚无成员称为count并且不会让我在任何情况下都使用self

我该怎么做?

1 个答案:

答案 0 :(得分:0)

很快,<Style x:Key="WindowStyle" TargetType="{x:Type Window}"> <Setter Property="Background" Value="{StaticResource Gray1}" /> </Style> 属性并未在count中定义,而是在Sequence中定义,因此您需要从Collection扩展。

Collection

如果您还需要通过索引(extension Collection where Element: Comparable { func normalize() -> [Element] { let count = self.count } } 访问集合的值,则应该扩展self[i],它提供了两个RandomAccessCollection(因为随机访问集合是一个集合)和count函数。

subscript

注意:由于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函数创建可以在下标方法中传递的索引。